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.
2.5.0 – 2024-09-26
- Update to pulldown-cmark 0.12 (see GH-276). This notably improves whitespace handling for HTML blocks and inline HTML.
- mdcat now treats inline HTML like inline code, just with different styling (see GH-276). Specifically, mdcat now wraps inline HTML.
2.4.0 – 2024-09-20
- Add limited support for tables (see GH-290). Inline markup is stripped from table cells, and text is not wrapped.
- Update dependencies.
2.3.1 – 2024-08-04
- Release builds no longer use fat LTO, which significantly reduces compilation time.
- Update dependencies.
- mdcat no longer panics on markups in descriptions of rendered images (see GH-287).
2.3.0 – 2024-07-28
- mdcat now includes a
--completions
argument to generate shell completions for all major shells (see GH-286).
- Update dependencies.
- mdcat now longer builds shell completions and man pages during compilation (see GH-286).
- Packagers now need to build the manpage explicitly during packaging.
- Release artifacts no longer contain completions; use
mdcat --completions
to generate them instead (see GH-286).
- Restore binary release artifacts (see GH-284)
2.2.0 – 2024-07-11
- Update a few vulnerable dependencies.
- Update resvg, which among other things enables colored emoji in SVG files (see GH-283).
2.1.2 – 2024-03-11
- Update dependencies to address Rust security advisories.
2.1.1 – 2024-01-15
- Update all dependencies (see GH-274).
2.1.0 – 2023-10-16
- Support images in VSCode integrated terminal, 1.80 or newer (see GH-266).
- When rendering iTerm2 images append
.png
to the file name reported to the terminal if mdcat rendered an SVG to PNG (see GH-267). Previously, mdcat retained the original file extension, and would ask iTerm2 to download a PNG image to an.svg
file.
- Correct some iTerm2 inline image commands to better comply to the specification (see GH-267).
- Always terminate OSC commands with ST instead of BEL, as the latter is the legacy form (see GH-267).
2.0.4 – 2023-10-03
- Update all dependencies.
- Bump MSRV to 1.72.
2.0.3 – 2023-04-24
- mdcat now uses the kitty protocol to render images on WezTerm (see GH-258).
- mdcat now downscales images to the column limit if rendering with the kitty protocol (see GH-258).
Previously mdcat scaled down to the window size, which looked strange if a given
--columns
was much smaller than the window size.
2.0.2 – 2023-04-19
- Update dependencies.
- Fix SVG rendering:
2.0.1 – 2023-04-16
- Properly reset line wrapping state in list items (see GH-254).
- Flush trailing spaces before starting a link to avoid link styling over an initial whitespace (see GH-255).
2.0.0 – 2023-04-15
- mdcat now fills paragraph text to the column limit, i.e. fills up short lines and wraps long lines (see GH-4).
- mdcat now allows to control color and style via a new
theme
field inpulldown_cmark_mdcat::Settings
of typepulldown_cmark_mdcat::Theme
(see GH-48).pulldown_cmark_mdcat::Theme::default()
provides the standard mdcat 1.x colors and style. - mdcat now exposes resource handling via the new
pulldown_cmark_mdcat::resources::ResourceUrlHandler
trait (see GH-247). pulldown_cmark_mdcat
allows to disable SVG support and thus avoid theresvg
dependency by disabling thesvg
feature (see GH-249).pulldown_cmark_mdcat
allows to disable image processing support and thus avoid theimage
dependency by disabling theimage-processing
feature (see GH-250).
- Update all dependencies.
mdcat::Settings
now holds a reference to a syntax set, so the syntax set can now be shared among multiple different settings.- Explicitly set minimum rust version in
Cargo.toml
, and document MSRV policy. - Move all core rendering functions into a new crate
pulldown-cmark-mdcat
;mdcat
itself only contains the argument parsing and handling now (see GH-248). If you were usingmdcat
as a library before, you likely want to usepulldown-cmark-mdcat
now. - Move HTTP resource handling into new crate
mdcat-http-reqwest
, in order to isolate the rather heavyreqwest
dependency (see GH-248). - Increase timeouts for HTTP resources to avoid aborting too early.
mdcat::Settings.resource_access
and the correspondingResourceAccess
enum (see GH-247).
1.1.1 – 2023-03-18
- No longer elide tracing info below warn level in release builds (see GH-242). This allows downstream consumers to keep tracing info included in their release builds.
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.