All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog. This project adheres to Semantic Versioning.
Use cargo release
to create a new release.
1.1.0 – 2023-02-27
- Update all dependencies.
This removes a transitive dependency on a vulnerable version of
remove_dir_all
, see GHSA-mc8h-8q98-g5hr. - No longer sniff mime type from contents to identify SVG images.
Instead rely on the
Content-Type
header for HTTP(S) images and the file extension for local resources (see GH-239). - Render SVG images using the pure Rust
resvg
crate instead ofrsvg-convert
; mdcat no longer requires the latter tool at runtime (see GH-240).
- Use
less -r
instead ofless -R
inmdless
if both$PAGER
and$MDCAT_PAGER
are unset (see GH-238). - Time out external resources if no data was read for 100ms. Previously mdcat waited for 1s before timing out (see GH-241).
1.0.0 – 2023-01-07
- Add
--detect-terminal
to print the name of the detected terminal program (see GH-232). - Add
--ansi
to skip terminal detection and use ANSI-formatting only (see GH-232).
- Replace
ureq
withreqwest
(see GH-229). This implies that the default build now creates a binary linked against the system standard SSL library, i.e. openssl under Linux. A fully static build now requires--no-default-features --features static
forcargo build
. - Terminal detection always checks
$TERM
first and trusts its value if it denotes a specific terminal emulator (see GH-232). - Update all dependencies.
0.30.3 – 2022-12-01
- Fix release workflow to restore release artifacts (see GH-218).
0.30.2 – 2022-12-01
- Update Github URL to https://github.com/swsnr/mdcat.
- Update dependencies.
0.30.1 – 2022-11-29
- Fix workflow syntax error to restore release artifacts.
0.30.0 – 2022-11-29
- Generate completions for
mdless
(see GH-216).
- Include generated shell completions in release artifacts.
- Fix completions for mdcat (see GH-214 and GH-216)
0.29.0 – 2022-10-21
- Move repository back to https://github.com/swsnr/mdcat.
- Restore release binaries.
- Update dependencies, in particular clap to 4.0.15.
- Support for
tree_magic_mini
for mime-type detection; mdcat now only uses thefile
tool (see GH-204).
0.28.0 – 2022-07-31
- Update all dependencies, in particular syntect to 5.0.0 and pulldown-cmark to 0.9.2.
0.27.1 – 2022-04-17
- Build error on Windows (see #201).
0.27.0 – 2022-04-10
- Add extensive tracing output, to aid debugging (see #147).
- mdcat no longer invokes
file
to detect SVG images, but now requires the presence of a system-wide magic database (see #154). Disable default features to restore the previous behaviour to invokefile
to detect mimetypes.
- File completion with zsh (see #198).
0.26.1 – 2022-02-12
- Moved repository to https://codeberg.org/flausch/mdcat.
0.26.0 – 2022-02-12
- Always output links as OSC-8 hyperlinks unless
--dump
is given. In particular, mdcat now prints hyperlinks if invoked asmdless
or with-p
, as recentless
versions support OCS-8 hyperlinks (see #191).
- mdcat no longer attempts to detect OSC8 link support of the underlying terminal.
0.25.1 – 2022-01-17
- Update pulldown-cmark to 0.9.1 which fixes a minor parsing issue.
0.25.0 – 2021-12-23
- Update pulldown-cmark to 0.9.
- Buffer writes to terminal and pager, to reduce the amount of syscalls.
0.24.2 – 2021-11-19
- Support for
$TERM=foot*
(see #193).
- Fix compiler error with newer
anyhow
versions (see #192).
0.24.1 – 2021-10-30
- Fix semi-broken release.
- Document support for foot in manpage.
0.24.0 – 2021-10-30
0.23.2 – 2021-07-18
- WezTerm is now detected by
TERM
andTERM_PROGRAM
environment variables (see #186).
0.23.1 – 2021-07-14
- Use
TERM_PROGRAM
for determining WezTerm terminal (see #185).
0.23.0 – 2021-07-04
0.22.4 – 2021-04-15
- Update dependencies
0.22.3 – 2021-02-22
- Refuse to read more than 100MiB from external resources, e.g. images; mdcat cannot display images of that size reasonably anyway (see #176).
- Fix type error on FreeBSD (see #177).
0.22.2 – 2021-01-01
- Replace
reqwest
withureq
to fetch images via HTTP/HTTPS (see #168 and #169); the latter has considerably less dependencies and builds faster. It also builds statically out of the box, hence the static musl builds no longer requirecurl
to fetch images.
0.22.1 – 2020-10-17
- Include manpage source in Windows packages. Currently the manpage doesn't build on Windows CI.
0.22.0 – 2020-10-17
- Enable OSC8 hyperlinks in Kitty (see #165).
Kitty supports hyperlinks since version 0.19, see Kitty #68.
Note that
mdcat
unconditionally prints hyperlinks if it detects a kitty terminal. It makes no attempt to detect whether the Kitty version is compatible or theallow_hyperlinks
setting is enabled. mdcat --version
(but notmdcat -V
) now informs whether HTTP/HTTPS support is builtin or requirescurl
.- mdcat now includes a manpage (see #167).
mdcat
now asks the controlling terminal for the terminal size and thus correctly detects the terminal size even if standard input, standard output and standard error are all redirected (see #166).mdcat
no longer requireskitty icat
to detect the size of kitty windows (see #166). Consequently mdcat can now show images on Kitty terminals even over SSH.mdcat --help
no longer uses colours, and always wraps at 80 characters now.
0.21.1 – 2020-09-01
- Update pulldown cmark to correctly ignore footnote refs (see #155).
0.21.0 – 2020-08-12
- Add
--paginate
flag to paginate the output of mdcat (see #152); with this flag mdcat sends it output toless -R
or any alternative pager set in$MDCAT_PAGER
or$PAGER
. This flag also disables all terminal-specific formatting as the pager likely won't support it. - Paginate output by default if invoked as
mdless
, that is, ifmdcat
is hard-linked tomdless
.
- Render email autolinks (i.e.
<[email protected]>
) asmailto:
links.
0.20.0 – 2020-07-05
mdcat::TerminalCapabilities
now exposes constructors for specific terminal emulators.- Render reference link definitions as inline links if possible (see #149). This mainly affects image links inside inline links which get rendered as reference links.
mdcat::Environment
now contains all environment information required to render properly, namely the local hostname and the base URL.
mdcat::push_tty
now takes anmdcat::Environment
instead ofbase_dir
.base_dir
is now part ofmdcat::Environment
.- Image links now use purple foreground text (see #140 and #149).
- Image links render as inline links if the terminal does not support inline images and the image is not inside another link (see #141).
mdcat::TerminalCapabilities
now usesOption
to denote missing capabilities.
- Always treat links targets as URLs, never as paths.
- On ITerm2 only use the last segment of image URLs as filename for inline images (see #149). Previously mdcat used the full URL based on a misunderstanding of the Inline Images Protocol.
0.19.0 – 2020-06-19
- Release packages now include generated shell completions for Bash, Zsh and Fish.
- Blockquotes no longer have green foreground text (see #144).
0.18.4 – 2020-06-14
- Fix typo in release workflow.
- Update all dependencies to no longer depend on yanked crate versions.
0.18.3 – 2020-06-14
- Properly ignore alt text of inline images (see #148).
0.18.2 – 2020-05-31
- Properly upload binaries for releases.
0.18.1 – 2020-05-31
- Fix typo in release workflow.
0.18.0 – 2020-05-31
- Add
mdcat::Error
as type alias tostd::io::Error
.
- New simpler rendering algorithm (see #[142]) which solves numerous rendering issues (see below).
- Handle internal errors with anyhow to add more context to errors (see #139}.
mdcat::push_tty
only fails withstd::io::Error
:mdcat
never visibly fails unless it can’t write output.
- Respect
--local-only
and resource access policy; this got lost in some refactoring (see #146). - Consistent margins and newlines around paragraphs, HTML blocks and inside list items (see #142).
- Correctly indent nested code blocks in lists and block quotes (see #142).
- No longer print leading blank lines before lists (see #142).
- Correctly indent block quotes (see #142).
- Colorize the entire text of links (see #142).
0.17.1 – 2020-05-24
- Correctly scale down large images on kitty (see #124 and #133 by @fspillner).
0.17.0 – 2020-05-20
mdcat
is now distributed under the MPL 2 license; some source files remain Apache 2.0 due to 3rd party rights (see #138).
- Do not fail with broken pipe error when rending large images (see #134 by @fspillner).
0.16.1 – 2020-05-15
mdcat::push_tty
now takes amdcat::Settings
struct which groups all external settings.
- Ignore broken pipes;
mdcat | head
no longer errors whenhead
closes stdout of mdcat early (see #136).
0.16.0 – 2020-04-11
- Upgrade to syntect 4.1 and enable its pure Rust regex backend to simplify building (see #131). This crate now builds without Clang which fixes Clang-related build issues (see #90)
0.15.1 – 2020-02-15
- Update pulldown-cmark to 0.7.
0.15.0 – 2020-01-11
- Release builds now perform full link-time optimization to create a smaller
binary. We do recommend to also
strip
themdcat
binary. - Render SVG images in kitty (see #114).
- Update to reqwest 0.10.
- Process file list as input (see #54 and #115, by @norman-abramovitz):
- Add
--fail
flag to exit on the first error when processing a file list; the default behaviour is to continue with the next file in case of error.
- Add
- Replace
remote_resources
feature withreqwest
feature to use reqwest for retrieving remote resources, and fall back to thecurl
command ifreqwest
is disabled.
0.14.0 – 2019-12-18
- Render images in kitty (see #65 and #104 by @fspillner).
- Update pulldown-cmark to 0.6 which supports CommonMark 0.29 and improves parser speed and correctness.
- Enable SIMD in pulldown-cmark to squeeze out the last bit of performance.
- Remove all features except
remote_resources
to reduce build complexity.
- No longer depend on
immeta
.
0.13.0 – 2019-03-30
- Render task lists nicely (see #72).
- Render strike-through text (see #71). Some terminals do not support this feature, and mdcat does not have a fallback currently (see #73).
0.12.1 – 2018-12-24
- Do not add newline after inline text with styles disabled (see #49).
0.12.0 – 2018-12-20
- Add
TerminalCapability
struct as replacement formdcat::Terminal
trait to remove dynamic dispatch and allow for more accurate and less complicated conditional compilation of terminal support for different platforms (see #45). - Move to Rust 2018, and raise minimum supported Rust version to 1.31 (see #46).
- Drop support for Rust 1.29 and older.
- Do not test specific Rust on versions on Travis CI any longer; Rust stable becomes the lowest supported Rust version.
mdcat::Terminal
trait and implementations (see #45).
- Set hostname to local hostname for inline links to
file://
URLs, which should properly resolvefile://
URLs over SSH (see OSC 8 file URLs, #42 and #44).
0.11.0 – 2018-10-25
- Always print colours regardless of whether stdout if a tty or not.
- Replace
--colour
option with a--no-colour
flag to turn off styled output. mdcat::push_tty
no longer takes ownership of theterminal
argument (see #41).- Travis CI builds Windows binaries now.
- Test formatting output.
0.10.1 – 2018-09-09
- Properly package musl binary on Travis CI; restores Linux binary in releases.
0.10.0 – 2018-09-09
- Support colours on Windows 10 console (see #36).
- Support musl target on Linux (see #37 and #38).
- Published Linux binary statically links musl now, and has no runtime dependencies (see #29 and #38).
0.9.2 – 2018-08-26
- Do not falsely ignore deployments from Travis CI for Linux and macOS.
0.9.1 – 2018-08-26
- Publish binaries for Linux, macOS and Windows (see #28).
- Correctly build macOS and Linux binaries on Travis CI.
0.9.0 – 2018-08-26
- Refactor internal terminal representation, replacing the terminal enum with a
new
Terminal
trait and dynamic dispatch (see #35). - Allow to disable specific terminal backends (see #35).
- Update minimum Rust version to 1.27.
0.8.0 – 2018-02-15
- Render SVG images in iTerm2 with
rsvg-convert
(requireslibrsvg
). - Expose
TerminalWrite
inmdcat
crate (see #20 by @Byron).
0.7.0 – 2018-02-08
- Show images from HTTP and HTTPS URLs inline in iTerm2.
- Add
--local
flag to render only local images inline; for remote images, eg, HTTP URLs, show only the image title and the URL. - Expose
mdcat
as a library crate (see #18), but with no guarantees about a stable interface, asmdcat
stays at version 0.x for now. - Show
--help
with colours.
- Adhere to Semantic Versioning, but stay pre-1.0 so anything still goes.
0.6.0 – 2018-02-02
- Show inline images in Terminology (see #16 by @vinipsmaker).
- Improve
--help
output: Hide some redundant options, add a bug reporting URL and explain the purpose ofmdcat
. - Reduce dependencies and thus build time
0.5.0 – 2018-01-27
- Improve
--help
output.
- Remove redundant default value from
--colour
help text (see #10, by @wezm). - Replace light black with green; the former doesn't work with Solarized Dark.
0.4.0 – 2018-01-21
- Use 8-bit ANSI colours for syntax highlighting to fit all kinds of terminal colour themes.
- Remove excess space at the end of code blocks
- Remove
--light
switch which became redundant due to better syntax highlighting.
0.3.0 – 2018-01-19
- Print image links
- Show images inline on iTerm.
- Rename to
mdcat
; I have no plans to add paging to this tool.
0.2.0 – 2018-01-16
- Highlight code blocks with Solarized color theme (light or dark).
- Naively show inline and block HTML.
- Set iTerm marks for headings.
- Auto-detect whether mdless can use iTerm2 marks.
- Add
--colour
flag to enable or disable coloured output.
0.1.1 – 2018-01-14
- Fix Travis CI badge on crates.io.
- Fix license layout in README.
0.1.0 – 2018-01-14
- Support inline formatting.
- Support headings.
- Support code blocks and block quotes.
- Support ordered and unordered lists, with nest.
- Show links, with references grouped by section.