Releases: lycheeverse/lychee
Version 0.10.0
Summary
This release adds some long-awaited features and adds support for excluding
paths, code blocks and nofollow
targets from checking. Please find details below.
Major Changes
- Add support for excluding paths from link checking (#623) @mre
- Add support for URI remapping (#620) @mre
- Exclude code blocks from checking (#523) @mre
- Add support for comments in
.lycheeignore
(#616) @mre - Add support for nofollow (#572) @mre
- Allow input URLs without scheme (fixes #567) @mre
- Also dump excluded links (#615) @mre
- Exclude example domains as per RFC 2606 from checking (#627)
- Set HTTP connect timeout and a TCP keepalive (#617) @mre
- Extract more status information from reqwest (#577) @mre
- Refactor response formatting (#599) @mre
- Add missing panic documentation (#561) @mre
- Skip Docker login on PRs from forks (#586) @MichaIng
- Enhance verbosity check (#578) @MichaIng
- Optimize plaintext extractor for small strings (#565) @mre
- Update scheme to sequence in example config (#576) @itamarhaber
- Regression: Fix cache verbosity issue (fixes #562) @mre
- Regression: Ignore invalid URLs (#571) @mre
- Update dependencies
Full Changelog: v0.9.0...v0.10.0
Thanks to all the testers, contributors, and maintainers for improving lychee! ❤️
v0.9.0
Major Changes
This is a bigger release for lychee with new features, bug fixes, performance improvements,
cleaner output formatting, and better docs.
We moved to a new HTML engine, html5gum by @untitaker.
The old engine, html5ever is still supported by setting the
LYCHEE_USE_HTML5EVER=1
environment variable, but it will be deprecated soon,
so let us know if you run into issues with the new engine.
Previously it could happen that lychee panicked on invalid links. There is a PR for reqwest to fix the issue, but in the meantime we added a workaround to avoid the panic.
Some more highlights:
- lychee output is now less verbose to focus on what matters.
- We moved from hubcaps to octocrab as our Github API client.
- The Docker image now also supports Apple Silicon.
- Across the board, we improved link checking speed and reduced allocations.
Pull Requests
- Improve Github API usage by @mre in #453
- Add caching functionality (v2) by @mre in #443
- Simplify error messages by @mre in #462
- Add more information about mail errors by @mre in #463
- Fix bugs in extractor; reduce allocs by @mre in #464
- Add missing Github exclusions; sort entries by @mre in #473
- Add Alpine page for benchmark; refactor code by @mre in #481
- lychee-bin: replace lazy_static by const_format by @lebensterben in #495
- Add html5gum as alternative link extractor by @untitaker in #480
- fix constant updating of progressbar by @untitaker in #488
- Fix default config by @mre in #491
- update rust-toolchain to .toml format by @lebensterben in #496
- Update license files by @lebensterben in #497
- lychee-lib::client reworked by @lebensterben in #500
- Add Docker semver tagging for new multiarch image by @mre in #503
- Multiarch for main Docker workflow by @mre in #506
- replace hubcaps by octocrab by @lebensterben in #502
- Use captured identifiers in format strings by @mre in #507
- Replace plain String with SecretString for GitHub token by @lebensterben in #509
- Prevent flaky tests by @mre in #514
- Only login to Dockerhub on image push by @mre in #515
- Disable Docker login for dependabot by @mre in #519
- Error cleanup by @mre in #510
- Improved IPv6 filtering support by @lebensterben in #501
- Response output overhaul by @mre in #524
- Fix link to documentation by @mre in #527
- Update link to documentation by @mre in #528
- Remove background from logo by @mre in #526
- Make retry wait time configurable by @mre in #525
- Print errors with a different format for easier clickability (#532) by @mre in #533
- Fix broken pipe error on failing writes to stdout by @mre in #535
- Print Github token error once at the end by @mre in #537
- Add more comments to path methods by @mre in #543
- Add Docker pulls badge by @mre in #550
- Avoid reqwest panic on invalid URIs by @mre in #557
- Update dependencies
Full Changelog: v0.8.2...v0.9.0
Thanks to all the testers, contributors, and maintainers for improving lychee! ❤️
Version 0.8.2
- Improve concurrency with streams (#330)
- Add ability to recursively walk a directory for links (e.g.
lychee .
) - Fix false-positives for special Github URLs (like /sponsors or /marketplace)
- Use tokenizer for extraction; add benchmark (#424)
- Max concurrency moved to check (#419)
- Add support for .lycheeignore file #308 (#402)
- Only print source in verbose mode (#400)
- Use thiserror for error handling (#399)
- Update docs and tests
Version 0.8.1
Version 0.8.0
This is a major milestone for lychee, because we added support for checking local
files. To do so, you can now set a a directory as --base
(e.g. /path/to/files
) to check relative URLs.
Check the docs for more info.
Below is a list of all major changes in this version.
- Add support for local files (#262)
- Add new flag
--require-https
for checking if a HTTPS URL is available (#195) - Add support for dumping links without checking them (#99)
- Don't exclude mail on
--exclude-all-private
(#316) - Don't panic on unknown status codes (#234)
- Make inputs required (show help message if not provided) (#329)
- Silently ignore absolute paths without base (#338)
- Cache
absolute_path
to decrease allocations (#346) - Imply "localhost" when loopback IPs are excluded (#351)
- Extract base from the source URL if
--base
is empty (#358) - Optimize Dockerfile (#326)
- Add an image description to DockerHub (#325)
- Move to
debian/bullseye:slim
as base image (#370) - Fix publish workflow (#309)
- Use
cargo-publish-all
for releases (#312) - Add http://www.w3.org/2000/svg to known false positives (#359)
- Add support for async profiling using tokio-console (#318)
- Refactor extractor (#354)
- Filter out directories with suffixes that look like known extensions
- Avoid double-encoding already encoded destination paths
- Make error message for broken file links more understandable
- Refactoring (e.g. use Or-Patterns from Rust 1.53)
- Bump crate dependencies
- Update
Makefile
and CI pipelines
Thanks to the following amazing devs who contributed features to this release
and reviewed pull requests (alphabetically ordered):
Version 0.7.1
Version 0.7.0
Refactoring work by @lebensterben
- Major changes in
lychee-lib::filter
module:- Fields in
Excludes
except theRegexSet
is now moved toFilter
. Filter
containsOption<Excludes>
andOption<Includes>
, which are
wrapper struct ofRegexSet
instead ofOption<RegexSet>
. As a result
the code now looks cleaner.- Factored out some filtering logics to dedicated functions.
- It's possible to write tests for those functions in addition to tests
for theFilter
struct.
- It's possible to write tests for those functions in addition to tests
- Added docs to
Filter::is_excluded
and reorgnized the code.
- Fields in
- placed
derive_builder
bytyped_builder
:- The internal interface very ugly, as admitted by the author, but we no
longer have nestedOption
s like before. - As a result, the
Client
building is much easier to read. - Main benefit of
typed_builder
is, the arguments feeded to builder is
checked at compile time instead of run-time.
- The internal interface very ugly, as admitted by the author, but we no
- Fixed a bug in
lychee::tests::usage
andlychee-lib::stats::test
.- Now it will clear environment variable which would otherwise cause an
issue ifGITHUB_TOKEN
is set.
- Now it will clear environment variable which would otherwise cause an
- Updated dependencies.
Version 0.6.0
Major refactor
Version 0.6.0-alpha4
Merge pull request #200 from lycheeverse/exclude-mail-fix Fix exclude mail, add tests
Version 0.6.0-alpha3
Fix broken email exclusion parameter