Releases: Automattic/harper
v0.14.0
What's Changed
This is a much smaller release, but there are some key changes.
Rust and JavaScript consumers of Harper can now access individual lint descriptions via Linter.description()
and Linter.getLintDescriptions()
, respectively. We've also added the ability to toggle Web Worker usage in the Obsidian plugin.
New Contributors
Full Changelog: v0.13.0...v0.14.0
v0.13.0
What's Changed
It has been more than two months since the last update to Harper. A lot has changed, and we're excited to see how it helps you write better-documented code, faster.
Automattic Acquires Harper
Until now, Harper has been a side project. I would work on it in my spare time or during lecture if I was feeling particularly bored. As of last week, that has changed.
As reported by TechCrunch and announced on their blog, moving forward I will be working for Automattic full-time to make Harper the most useful and portable grammar checker out there. I will continue to support harper-ls
and continue to accept pull requests for the various other Harper integrations, but much of my effort will be focused on initiatives to bring Harper to Automattic's products.
Harper Gets Faster
With the latest release, Harper is getting even faster, particularly on initial and uncached document load. Until now, Harper has been using a homegrown spell-checking algorithm that, while naive, has been quite effective at delivering quality corrections. Over the last several months, Grant Lemons has been working on a significant improvement to this algorithm, leveraging finite-state-transducers to more quickly search for valid words of minimum edit distance to your misspelled ones. You can read more about that work on Grant's site.
This also comes to the benefit of our more high-level analysis and pattern-matching engines, which are the main reasons we couldn't use an off-the-shelf spellchecking library.
harper.js
With Harper 0.13.0
, we're releasing a new JavaScript library for using Harper anywhere on the web or on Node.js. We're calling it harper.js
, and you can find it on NPM. Documentation is more than a little sparse at the moment. We'll be adding to the public documentation in the coming days, so keep an eye on it.
Feedback
As per usual, don't be afraid to file an issue if you have any feedback, feature requests or problems. A lot has changed, so we'd be worried if there weren't a couple issues.
- build(deps): bump wasm-bindgen from 0.2.92 to 0.2.95 by @dependabot in #220
- build(deps): bump once_cell from 1.19.0 to 1.20.2 by @dependabot in #219
- Minor updates by @mcecode in #224
- build(deps): bump pulldown-cmark from 0.11.0 to 0.12.2 by @dependabot in #237
- build(deps): bump ordered-float from 4.2.2 to 4.4.0 by @dependabot in #236
- build(deps): bump anyhow from 1.0.83 to 1.0.90 by @dependabot in #235
- Use standard "python" language id, add support for missing
.py
extension by @jfly in #241 - Add support for nix by @jfly in #244
- build(deps): bump clap from 4.5.18 to 4.5.20 by @dependabot in #246
- build(deps): bump thiserror from 1.0.60 to 1.0.65 by @dependabot in #247
- build(deps): bump serde_json from 1.0.128 to 1.0.132 by @dependabot in #245
- build(deps): bump tokio from 1.40.0 to 1.41.0 by @dependabot in #249
- build(deps): bump anyhow from 1.0.90 to 1.0.91 by @dependabot in #248
- build(deps): bump thiserror from 1.0.65 to 1.0.67 by @dependabot in #264
- build(deps): bump anyhow from 1.0.91 to 1.0.92 by @dependabot in #261
- build(deps): bump ordered-float from 4.4.0 to 4.5.0 by @dependabot in #260
- build(deps): bump serde from 1.0.209 to 1.0.214 by @dependabot in #263
- Language ID Fixes by @mcecode in #266
- build(deps): bump anyhow from 1.0.92 to 1.0.93 by @dependabot in #272
- build(deps): bump thiserror from 1.0.67 to 2.0.3 by @dependabot in #273
- build(deps): bump hashbrown from 0.15.0 to 0.15.1 by @dependabot in #274
- build(deps): bump cross-spawn from 7.0.3 to 7.0.5 in /packages by @dependabot in #279
- build(deps): bump tokio from 1.41.0 to 1.41.1 by @dependabot in #275
- feat: Create lint for 'that that' -> 'that which' by @grantlemons in #278
- build(deps): bump clap from 4.5.20 to 4.5.21 by @dependabot in #283
- build(deps): bump serde_json from 1.0.132 to 1.0.133 by @dependabot in #281
- feat: FST-based Curated Dictionary Spellchecking by @grantlemons in #258
- feat(#253): remove requirement that word be in list for repetition by @grantlemons in #277
- build(deps): bump hashbrown from 0.15.1 to 0.15.2 by @dependabot in #285
- Improve config change handling by @mcecode in #292
- fix: correct readme workflows by @grantlemons in #295
- ci: disable packaging and building workflows on draft PRs by @grantlemons in #294
- fix(#287): add minimum as a correction from min by @grantlemons in #291
- build(deps): bump tokio from 1.41.1 to 1.42.0 by @dependabot in #301
- build(deps): bump thiserror from 2.0.3 to 2.0.4 by @dependabot in #300
- build(deps): bump wasm-bindgen from 0.2.95 to 0.2.97 by @dependabot in #297
- build(deps): bump tracing from 0.1.40 to 0.1.41 by @dependabot in #299
- build(deps): bump tracing-subscriber from 0.3.18 to 0.3.19 by @dependabot in #298
- docs: update a link to point to github.com/Automattic/harper by @macbre in #311
- fix(core): updates to SpelledNumbers by @grantlemons in #325
- feat: Span visualization command by @grantlemons in #303
- build(deps): bump thiserror from 2.0.4 to 2.0.9 by @dependabot in #328
- build(deps): bump anyhow from 1.0.93 to 1.0.95 by @dependabot in #327
- build(deps): bump nanoid from 3.3.7 to 3.3.8 in /packages by @dependabot in #316
- build(deps): bump ordered-float from 4.5.0 to 4.6.0 by @dependabot in #326
- build(deps): bump clap from 4.5.21 to 4.5.23 by @dependabot in #309
- Support using a different
harper-ls
executable than the one bundled in the VSCode extension by @mcecode in #330 - feat(vscode-plugin): Add Haskell Support by @mcecode in #336
- feat(#331): Haskell Comment Support by @grantlemons in #332
New Contributors
Full Changelog: v0.12.0...v0.13.0
v0.12.0
What's Changed
A lot has changed since the last release, so refer to the more detailed notes below for a comprehensive view.
We have a lot of bug-fixes coming your way, as well as (thanks to @mcecode) the creation and availability of a Visual Studio Code plugin! You can install it through the official marketplace, OpenVSX or one of the VSIX packages found in this release.
Although it is not in the official Harper repository, I do want to mention that @StevenLove has put in the work to get a Harper plugin in the official extension shop for Zed.
We do have one "breaking" change. Since we've observed that the Windows' build of Harper has been broken for some time now, @mcecode has swapped out the target compiler to msvc
. This might delay availability of the latest version in Mason.
In the Obsidian plugin, we've also significantly improved the settings page.
As per usual, don't be afraid to file an issue if you have any feedback, feature requests or problems.
- feat: new analysis and suggestions for correct usage of ellipsis.
- fix: break words on hyphens for the
an_a
lint by @alex-ozdemir in #168 - dict: add TCP, UDP and QUIC to the default dictionary. by @fisherdarling in #179
- Move to stable rustc by @fisherdarling in #186
- feat: add naïve to dictionary by @grantlemons in #190
- fix: add blurb on language support and change count of ways to use by @grantlemons in #191
- feat: Collapse identifiers seperated by hyphens or underscores if they exist in the file dictionary by @grantlemons in #199
- fix(#198): limit tokio threads to 4 (+ main) by @grantlemons in #202
- Windows GitHub Actions builds missing dependency by @mcecode in #217
- VS Code Support by @mcecode in #200
- build(deps): bump itertools from 0.12.1 to 0.13.0 by @dependabot in #163
- build(deps): bump unicode-width from 0.1.12 to 0.1.13 by @dependabot in #162
- build(deps): bump hashbrown from 0.14.5 to 0.15.0 by @dependabot in #212
- build(deps): bump futures from 0.3.30 to 0.3.31 by @dependabot in #210
- build(deps): bump unicode-width from 0.1.13 to 0.2.0 by @dependabot in #188
- build(deps): bump rollup from 3.29.4 to 4.22.4 in /packages by @dependabot in #178
- build(deps): bump clap from 4.5.4 to 4.5.18 by @dependabot in #176
- build(deps-dev): bump vite from 4.5.3 to 4.5.5 in /packages by @dependabot in #172
- build(deps-dev): bump rollup from 4.18.0 to 4.22.4 in /packages by @dependabot in #177
New Contributors
- @alex-ozdemir made their first contribution in #168
- @fisherdarling made their first contribution in #179
- @grantlemons made their first contribution in #190
Full Changelog: v0.11.0...v0.12.0
v0.11.0
What's Changed
- fix: remove dbg by @StevenLove in #136
- fix: speed up
just dogfood
execution by @StevenLove in #140 - feat: allow to configure file dictionary path by @philipp-tailor in #145
- fix: test 'spell::hunspell::tests::correctly_expands_test_files' failed by @Cryolitia in #157
- feat: created linter for offensive language
- feat: created linter for improperly terminating conjunctions
- feat: improved documentation on
--help
New Contributors
- @StevenLove made their first contribution in #136
- @philipp-tailor made their first contribution in #145
- @Cryolitia made their first contribution in #157
Full Changelog: v0.10.0...v0.11.0
v0.10.0
What's Changed
- Removed unneeded error logs from
harper-ls
- Created linter for proper use of linking verbs (disabled by default for now)
- Added settings page and initial commands to Obsidian plugin
- Removed dead code
- Fixed cache-busting issue resulting in poor spellchecking performance
- Fixed issues with certain words in the AnA linter
- The markdown parser should now ignore hidden Wikilink text
- Enhanced documentation
- feat: make vscode extension packageable by vsce by @mcecode in #117
- build(deps): bump micromatch from 4.0.7 to 4.0.8 in /packages by @dependabot in #120
- build(deps-dev): bump svelte from 4.2.17 to 4.2.19 in /packages by @dependabot in #124
New Contributors
Full Changelog: v0.9.5...v0.10.0
v0.9.5
What's Changed
- Improved syntactic analysis via dictionary expansion inference.
- Added code blocks to CJK classifier
- Added words to dictionary via dogfooding.
v0.9.4
What's Changed
- Harper should now ignore CJK characters.
v0.9.3
v0.9.2
What's Changed
- Harper no longer marks "repo", "repos", or "repo's" as incorrect.
- Harper now recognizes hyphenated words (such as "non-null") as single tokens. Lints for improperly hyphenated words are in the works. We're actively seeking feedback on this.
- Several internal changes that will make more advanced lints and syntactic analysis easier.
v0.9.0
What's Changed?
- Dotted initialism and things like "i.e." and "e.g." are no longer false positives
- JavaDoc and HTML are now properly parsed.
Full Changelog: v0.8.8...v0.9.0