NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Go modules · #328 by repository stars
Last release 13 days ago
19 Sep 2026
Ships fairly regularly
a new release about every 2 weeks
Nearly every release is documented
notes for 29 of 29 stable releases
Nothing withdrawn
no release was ever pulled
5 years old
779 releases · first in 2021
One column per quarter.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
a793d10 goreleaser: Fix deprecated options
Adds support for various LevelDB formats (thanks @mikez) and Garmin Flexible and Interoperable Data Transfer format (FIT) (thanks @mlofjard).
And as usual some small fixes and dependency updates.
~/.config/fq in addition to ~/Library/Application Support/fq. #871aac_frame Decode instance tag and common window flag. #859
fit Add support for Garmin Flexible and Interoperable Data Transfer decoder. Thanks @mlofjard #874
# to_kml.jq
# convert locations in a fit structure to KML
def to_kml:
( [ .data_records[].data_message as {position_lat: $lat, position_long: $long}
| select($lat and $long)
| [$long, $lat, 0]
| join(",")
]
| join(". ")
| { kml: {"@xmlns":"http://earth.google.com/kml/2.0"
, Document: {Placemark: {LineString: {coordinates: .}}}}
}
| to_xml({indent:2})
);Usage:
# -L to add current directory to library path
# -r for raw string output
# 'include "to_ml";' to include to_kml.jq
# to_kml calls to_kml function
$ fq -L . -r 'include "to_kml"; to_kml' file.fit > file.kmlhevc_sps Fix some incorrect profile_tier_level decoding. #829
html Fix issue parsing elements including SOLIDUS "/". #870
mpeg_es Support ES_ID_Inc and decode descriptors for IOD tags
leveldb_descriptor, leveldb_log, leveldb_table Add support for LevelDB. Thanks @mikez #824
pcapng Decode all section headers instead of just the first. #860
png Fix incorrect decoding of type flags. #847
hevc_sps Fix incorrect decoding of profile_tier_level. #829
tls Fix field name typos. #839
mp4
webp Decode width, height and flags for lossless WebP. #857
torepr for descriptorstringify by preallocating resultAdds support for various LevelDB formats (thanks @mikez) and Garmin Flexible and Interoperable Data Transfer format (FIT) (thanks @mlofjard).
And as usual some small fixes and dependency updates.
~/.config/fq in addition to ~/Library/Application Support/fq. #871aac_frame Decode instance tag and common window flag. #859
fit Add support for Garmin Flexible and Interoperable Data Transfer decoder. Thanks @mlofjard #874
# to_kml.jq
# convert locations in a fit structure to KML
def to_kml:
( [ .data_records[].data_message as {position_lat: $lat, position_long: $long}
| select($lat and $long)
| [$long, $lat, 0]
| join(",")
]
| join(". ")
| { kml: {"@xmlns":"http://earth.google.com/kml/2.0"
, Document: {Placemark: {LineString: {coordinates: .}}}}
}
| to_xml({indent:2})
);
Usage:
# -L to add current directory to library path
# -r for raw string output
# 'include "to_ml";' to include to_kml.jq
# to_kml calls to_kml function
$ fq -L . -r 'include "to_kml"; to_kml' file.fit > file.kml
hevc_sps Fix some incorrect profile_tier_level decoding. #829
html Fix issue parsing elements including SOLIDUS "/". #870
mpeg_es Support ES_ID_Inc and decode descriptors for IOD tags
leveldb_descriptor, leveldb_log, leveldb_table Add support for LevelDB. Thanks @mikez #824
pcapng Decode all section headers instead of just the first. #860
png Fix incorrect decoding of type flags. #847
hevc_sps Fix incorrect decoding of profile_tier_level. #829
tls Fix field name typos. #839
mp4
ctts box v0 sample offset seems to be signed in practice but not in spec. #832webp Decode width, height and flags for lossless WebP. #857
torepr for descriptorstringify by preallocating resultNothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Make synthetic values not look like decode values with a zero range. #777
<byte>[.<bits>] notation it is now shown as 5-6, before it was shown as 5-5.7. See usage documentation for more examples. #789from_jq error handling. Thanks @emanuele6 for reporting. #788pick/1 function. Outputs value and nested values for given input expression.
# pick out all string values from a ELF header
$ fq '.header | pick(.. | select(type == "string"))' /bin/ls
{
"ident": {
"data": "little_endian",
"magic": "\u007fELF",
"os_abi": "sysv",
"pad": "\u0000\u0000\u0000\u0000\u0000\u0000\u0000"
},
"machine": "x86_64",
"type": "dyn"
}
# bonus tip:
# if you only need to pick one level then jq has a shortcut syntax
$ fq '.header | {type, machine}' /bin/ls
{
"machine": "x86_64",
"type": "dyn"
}avi
decode_extended_chunks option. This is trailing chunks used by big AVI files. #786$ fq '.streams[0]' file.avi
│00 01 02 03 04 05 06 07│01234567│.streams[0]{}: stream
0x1680│ 00 00 00 01 67 f4│ ....g.│ samples[0:3]:
0x1688│00 0d 91 9b 28 28 3f 60│....((?`│
0x1690│22 00 00 03 00 02 00 00│".......│
* │until 0x2409.7 (3464) │ │
│ │ │ type: "vids"
│ │ │ handler: "H264"
│ │ │ compression: "H264"exif (and tiff)
gzip
members array and a uncompressed field that is the concatenation of the uncompressed members.macho
matroska
protobuf
webp
zip Better timestamp support and fixes
$ fq '.local_files[] | select(.file_name == "a").last_modification' file.zip
│00 01 02 03 04 05 06 07│01234567│.local_files[3].last_modification{}:
0xd0│ 81 01 │ .. │ fat_time: 0x181
│ │ │ second: 2 (1)
│ │ │ minute: 12
│ │ │ hour: 0
0xd0│ 73 53│ sS│ fat_date: 0x5373
│ │ │ day: 19
│ │ │ month: 11
│ │ │ year: 2021 (41)
│ │ │ unix_guess: 1637280722 (2021-11-19T00:12:02)<byte>[.<bits>] notation it is now shown as 5-6, before it was shown as 5-5.7. See usage documentation for more examples. #789from_jq error handling. Thanks @emanuele6 for reporting. #788pick/1 function. Outputs value and nested values for given input expression.# pick out all string values from a ELF header
$ fq '.header | pick(.. | select(type == "string"))' /bin/ls
{
"ident": {
"data": "little_endian",
"magic": "\u007fELF",
"os_abi": "sysv",
"pad": "\u0000\u0000\u0000\u0000\u0000\u0000\u0000"
},
"machine": "x86_64",
"type": "dyn"
}
# bonus tip:
# if you only need to pick one level then jq has a shortcut syntax
$ fq '.header | {type, machine}' /bin/ls
{
"machine": "x86_64",
"type": "dyn"
}
avi
decode_extended_chunks option. This is trailing chunks used by big AVI files. #786$ fq '.streams[0]' file.avi
│00 01 02 03 04 05 06 07│01234567│.streams[0]{}: stream
0x1680│ 00 00 00 01 67 f4│ ....g.│ samples[0:3]:
0x1688│00 0d 91 9b 28 28 3f 60│....((?`│
0x1690│22 00 00 03 00 02 00 00│".......│
* │until 0x2409.7 (3464) │ │
│ │ │ type: "vids"
│ │ │ handler: "H264"
│ │ │ compression: "H264"
exif (and tiff)
gzip
members array and a uncompressed field that is the concatenation of the uncompressed members.macho
matroska
protobuf
webp
zip Better timestamp support and fixes
$ fq '.local_files[] | select(.file_name == "a").last_modification' file.zip
│00 01 02 03 04 05 06 07│01234567│.local_files[3].last_modification{}:
0xd0│ 81 01 │ .. │ fat_time: 0x181
│ │ │ second: 2 (1)
│ │ │ minute: 12
│ │ │ hour: 0
0xd0│ 73 53│ sS│ fat_date: 0x5373
│ │ │ day: 19
│ │ │ month: 11
│ │ │ year: 2021 (41)
│ │ │ unix_guess: 1637280722 (2021-11-19T00:12:02)
Your coding agent can read these notes before it upgrades. Set up the MCP server →