# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## v0.9.2 (2024-09-26)
### Bug Fixes
- decode html entities in all backend's returned titles
### Commit Statistics
- 1 commit contributed to the release.
- 1 commit was understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
### Commit Details
view details
* **Uncategorized**
- Decode html entities in all backend's returned titles (9917076)
## v0.9.1 (2024-09-25)
### Bug Fixes
- exclude "exY" chapters from chapter listing for lightnovelworld
Turns out light novel world sometimes has extra chapters name "ex{int}" for extra chapters, such as artworks and others. Filter those out.
### Commit Statistics
- 2 commits contributed to the release.
- 1 commit was understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
### Commit Details
view details
* **Uncategorized**
- Release libwebnovel v0.9.1 (09ad5e0)
- Exclude "exY" chapters from chapter listing for lightnovelworld (afe6601)
## v0.9.0 (2024-09-25)
### Chore
- Update README.md
- fix clippy warnings
### New Features
- add support for lightnovelworld.com
### Commit Statistics
- 4 commits contributed to the release.
- 1 day passed between releases.
- 3 commits were understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
### Commit Details
view details
* **Uncategorized**
- Release libwebnovel v0.9.0 (b694bcb)
- Update README.md (b701828)
- Add support for lightnovelworld.com (4c52b70)
- Fix clippy warnings (0064cea)
## v0.8.1 (2024-09-24)
### Chore
- Update README.md
### New Features
- Improve RR anti-theft text removal
### Commit Statistics
- 3 commits contributed to the release.
- 2 commits were understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
### Commit Details
view details
* **Uncategorized**
- Release libwebnovel v0.8.1 (41f4ea4)
- Update README.md (6e242e6)
- Improve RR anti-theft text removal (3344312)
## v0.8.0 (2024-09-24)
### New Features
- implement retry logic with fibonacci backoff for HTTP requests (limited to 60s wait)
### Commit Statistics
- 2 commits contributed to the release.
- 6 days passed between releases.
- 1 commit was understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
### Commit Details
view details
* **Uncategorized**
- Release libwebnovel v0.8.0 (e5312d2)
- Implement retry logic with fibonacci backoff for HTTP requests (limited to 60s wait) (bbe3805)
## v0.7.1 (2024-09-17)
### Chore
- bump version
### New Features
- Add custom Debug implementation for various structs to reduce un-needed verbosity.
### Bug Fixes
- don't serialize chapter metadata key if none is present
### Commit Statistics
- 4 commits contributed to the release.
- 1 day passed between releases.
- 3 commits were understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
### Commit Details
view details
* **Uncategorized**
- Release libwebnovel v0.7.1 (0df7315)
- Bump version (1f0ac3e)
- Don't serialize chapter metadata key if none is present (9cab681)
- Add custom Debug implementation for various structs to reduce un-needed verbosity. (826f0a7)
## v0.7.0 (2024-09-16)
### New Features
- Add `From<&Chapter>` implementation to ChapterListElem
ChapterListElem is in reality a tuple (usize, String).
Also add a new variant to BackendError
### Commit Statistics
- 2 commits contributed to the release.
- 1 commit was understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
### Commit Details
view details
* **Uncategorized**
- Release libwebnovel v0.7.0 (7c0daff)
- Add `From<&Chapter>` implementation to ChapterListElem (dc2ff98)
## v0.6.0 (2024-09-16)
### Chore
- Update README.md
### New Features
- Add `get_chapter_list` to backends
This functions returns a `(index: usize, title: String)` tuple that can be used to compare chapters without making an individual request to each chapter. This is mainly useful to detect deletions on the source versus a local cache.
- Refactor freewebnovel selectors to use LazyLock for minor efficiency improvements.
- Refactor RR's selectors for a minor efficiency improvement.
Less used CPU cycles are always better, right?
- Build RR's regex list only once
This results in a very small, as in barely measurable, performance improvement.
### Bug Fixes
- don't assume RR's antitheft message have a
class.
### Commit Statistics
- 7 commits contributed to the release.
- 6 commits were understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
### Commit Details
view details
* **Uncategorized**
- Release libwebnovel v0.6.0 (055223a)
- Update README.md (a6b3954)
- Add `get_chapter_list` to backends (0336e08)
- Refactor freewebnovel selectors to use LazyLock for minor efficiency improvements. (014de27)
- Refactor RR's selectors for a minor efficiency improvement. (5084ee5)
- Don't assume RR's antitheft message have a class. (2302f81)
- Build RR's regex list only once (6b84dd2)
## v0.5.0 (2024-09-15)
### Chore
- bump version
### New Features
- Add immutable_identifier method to backends.
This method returns something that won't change if the title of the novel changes.
### Commit Statistics
- 3 commits contributed to the release.
- 2 commits were understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
### Commit Details
view details
* **Uncategorized**
- Release libwebnovel v0.5.0 (280f59b)
- Bump version (54fc130)
- Add immutable_identifier method to backends. (aad742d)
## v0.4.1 (2024-09-15)
### Chore
- Exclude CHANGELOG from eof pre-commit hook.
Yeah, there's a trailing space on changelog generation, which blocks the release.
- update locked deps
- bump version
- Add configuration for [pre-commit](https://pre-commit.com) support
- use map_err instead of or_else for RoyalRoad author parsing as per clippy suggestion
### New Features
- refactor error types when parsing Chapter
- Use only one HTTP client
Use LazyLock for HTTP client to improve initialization. This reduces the overhead of creating a new client for each request by reusing a single instance, thus hopefully opening only one TCP connection. Maybe that will convince webnovel hosts that we are not a threat.
### Bug Fixes
- first draft of attempt to remove RR's added text when reading outside of their website.
It makes sense to prevent reading on other websites that steal content and present it as their own, much less for a local copy of something.
- Use usize instead of u32 for chapter count/indexes
### Commit Statistics
- 10 commits contributed to the release.
- 4 days passed between releases.
- 9 commits were understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
### Commit Details
view details
* **Uncategorized**
- Release libwebnovel v0.4.1 (0a15e3a)
- Exclude CHANGELOG from eof pre-commit hook. (b1c257f)
- Update locked deps (a337c3a)
- Bump version (adccec5)
- Refactor error types when parsing Chapter (5a76e30)
- Use only one HTTP client (67ed3c0)
- Add configuration for [pre-commit](https://pre-commit.com) support (9e4eba2)
- First draft of attempt to remove RR's added text when reading outside of their website. (6ce7fb9)
- Use map_err instead of or_else for RoyalRoad author parsing as per clippy suggestion (5f43f7a)
- Use usize instead of u32 for chapter count/indexes (504a0d2)
## v0.4.0 (2024-09-11)
### Chore
- Update README.md
- bump version
### New Features
- Add fiction cover image fetching
### Commit Statistics
- 4 commits contributed to the release.
- 3 days passed between releases.
- 3 commits were understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
### Commit Details
view details
* **Uncategorized**
- Release libwebnovel v0.4.0 (d3090f1)
- Update README.md (3e715a8)
- Bump version (eeb2060)
- Add fiction cover image fetching (e9f73bd)
## v0.3.2 (2024-09-07)
### Chore
- bump version
### New Features
- Add request error handling on freewebnovel::get_chapter
We previously didn't check the success of the http GET request and were unable to return an appropriate error in case of a request failure.
### Commit Statistics
- 3 commits contributed to the release.
- 2 commits were understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
### Commit Details
view details
* **Uncategorized**
- Release libwebnovel v0.3.2 (7592ad2)
- Bump version (b8a6fce)
- Add request error handling on freewebnovel::get_chapter (72606b6)
## v0.3.1 (2024-09-06)
### Chore
- Update README.md
- add keywords & categories for crates.io
### New Features
- Add Chapter (de)serialization
This is done with FromStr/Display.
### Bug Fixes
- add link to docs on the docs badge
### Commit Statistics
- 5 commits contributed to the release.
- 4 commits were understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
### Commit Details
view details
* **Uncategorized**
- Release libwebnovel v0.3.1 (0e70a1c)
- Update README.md (9f05c48)
- Add Chapter (de)serialization (62fbb66)
- Add keywords & categories for crates.io (a930c67)
- Add link to docs on the docs badge (2094cbc)
## v0.3.0 (2024-09-06)
### Bug Fixes
- fix typo in release script
- add a check to commit the readme file only if it has changed
- commit the readme after being generated by `cargo readme` in the release process
- fix license specification in Cargo.toml
### Chore
- Update README.md
### Documentation
- include all features on docs generation
- add more lints & fix missing intra links
### New Features
- Add chapter ordering with function provided by backends
This enables multiple things:
- ordering the chapters (obvy);
### Commit Statistics
- 10 commits contributed to the release.
- 8 commits were understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
### Commit Details
view details
* **Uncategorized**
- Release libwebnovel v0.3.0 (af83166)
- Fix typo in release script (3ff0b25)
- Add a check to commit the readme file only if it has changed (7c7610d)
- Commit the readme after being generated by `cargo readme` in the release process (cfc71d3)
- Update README.md (b5870a4)
- Fix license specification in Cargo.toml (60485dc)
- Release libwebnovel v0.3.0 (8113759)
- Add chapter ordering with function provided by backends (e7a5a93)
- Include all features on docs generation (16e3a0b)
- Add more lints & fix missing intra links (d5c35c9)
## v0.2.0 (2024-09-05)
### Chore
- bump version
### Documentation
- cleanup
### New Features
- add freewebnovel and fix libread
- add smart-release & git push to release script
- add release script
### Bug Fixes
- fix default Backend::get_chapters() implementation
### Commit Statistics
- 12 commits contributed to the release.
- 6 commits were understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
### Commit Details
view details
* **Uncategorized**
- Release libwebnovel v0.2.0 (4371836)
- Add freewebnovel and fix libread (9e8018d)
- Add smart-release & git push to release script (f0f960f)
- Release libwebnovel v0.1.1 (eac14d7)
- Add release script (7f68a5a)
- Bump version (51636dc)
- Fix default Backend::get_chapters() implementation (f9307d2)
- Cleanup (12d1a5a)
- Remove Storage-related stuff as this will be in a separate crate (7a17b5d)
- Add some more docs, fix metadata (dc6be84)
- Initial working version (0592e60)
- Initial commit (10f6bdf)
## v0.1.1 (2024-09-05)
### Chore
- bump version
### Documentation
- cleanup
### New Features
- add release script
- add release script
### Bug Fixes
- fix default Backend::get_chapters() implementation