Releases: Automattic/harper
v0.20.0
What's Changed
- chore: Maintenance Changes by @mcecode in #583
- build: use
just
-native dependency resolution by @elijah-potter in #554 - build(deps): bump tree-sitter-dart from 0.0.3 to 0.0.4 by @dependabot in #566
- build(deps): bump serde_json from 1.0.137 to 1.0.138 by @dependabot in #568
- build(deps-dev): bump @rollup/plugin-typescript from 11.1.6 to 12.1.2 in /packages by @dependabot in #569
- feat(web): add link to the Discord server by @elijah-potter in #585
- clean up strange character at end-of-line by @hippietrail in #580
- feat(core): Lint for those who don't like Oxford commas by @hippietrail in #562
- docs(obsidian): notify people they should use up-to-date Electron by @elijah-potter in #586
- build(deps-dev): bump vitest from 2.1.8 to 2.1.9 in /packages by @dependabot in #588
- build(deps-dev): bump @vitest/browser from 2.1.8 to 2.1.9 in /packages by @dependabot in #591
- fix(core): add
on
to the list of special cases by @elijah-potter in #592 - feat(core): start support for hex numbers by @hippietrail in #553
- feat: change
just addnoun
to have different affixes as per #595 by @hippietrail in #601 - Phrase fixes by @elijah-potter in #589
- dict: add inclusivity by @lukasmwerner in #590
- docs(vscode): revised introductional material by @elijah-potter in #602
- docs: missing word in web/author-a-rule by @hippietrail in #614
- feat: adds a brief helpful comment to each entry describing its function by @hippietrail in #593
- fix(ls): release config lock to avoid deadlocks by @nyonson in #612
- feat(core): create rule for the possessive version of "you" by @elijah-potter in #619
- bench(harper.js): add benchmarks for configuration methods by @elijah-potter in #618
- grammar agreement in obsidion plugin comment by @hippietrail in #622
- feat: clarify message for uncapitalized "I" by @hippietrail in #625
- build(deps-dev): bump @types/node from 22.13.0 to 22.13.1 in /packages by @dependabot in #632
- build(deps-dev): bump esbuild from 0.24.2 to 0.25.0 in /packages by @dependabot in #633
- build(deps-dev): bump typescript from 5.6.3 to 5.7.3 in /packages by @dependabot in #631
- build(deps-dev): bump @sveltejs/kit from 2.16.1 to 2.17.1 in /packages by @dependabot in #629
- chore: correct some affix annotations by @hippietrail in #617
- feat: split triggers in
matcher.rs
into categories with explanations by @hippietrail in #636 - Cut-and-paste error in "report error" template by @hippietrail in #623
- bug: reverse correcting "supposed to" to "suppose to" by @hippietrail in #621
- feat: if spellcheck only has one suggestion mention it directly by @hippietrail in #626
- fix(obsidian): correctly handle Unicode conversions by @elijah-potter in #627
- feat: add
harper-cli forms
andjust getforms
by @hippietrail in #615 - Closed Compound Matcher Conversions by @elijah-potter in #608
- build(deps): bump clap from 4.5.27 to 4.5.28 by @dependabot in #635
- build(deps): bump esbuild from 0.23.1 to 0.25.0 in /packages by @dependabot in #639
- fix(core): make narrow linter specifically for
long and behold
by @elijah-potter in #641 - fix(core): currency placement with certain decimal positions by @elijah-potter in #604
New Contributors
Full Changelog: v0.19.1...v0.20.0
v0.19.1
What's Changed
The biggest change in this version: the ability to ignore lints. This is some pretty new code, so we hope to hear from you all to see how we can improve it.
- feat: issue templates by @elijah-potter in #539
- feat(core): even more holidays by @hippietrail in #533
- feat(core): implement "despite of" lint by @hippietrail in #531
- feat(html): condense spaces like most HTML parsers by @elijah-potter in #546
- Ignore Lints by @elijah-potter in #529
- fix(core): #548
you
is not a verb by @elijah-potter in #551 - docs: mention #536 on installation pages by @elijah-potter in #538
- Site fixes and updates by @elijah-potter in #552
- feat(core): created framework for correcting common phrases by @elijah-potter in #550
- feat(core): condense multi-token Latin words and phrases by @elijah-potter in #473
Full Changelog: v0.18.1...v0.19.1
v0.18.1
What's Changed
- build(deps): bump @sveltepress/theme-default from 5.0.5 to 5.0.7 in /packages by @dependabot in #519
- build(deps-dev): bump eslint-config-prettier from 9.1.0 to 10.0.1 in /packages by @dependabot in #518
- build(deps-dev): bump vite-plugin-top-level-await from 1.4.1 to 1.4.4 in /packages by @dependabot in #516
- build(deps-dev): bump esbuild from 0.20.2 to 0.24.2 in /packages by @dependabot in #517
- build(deps-dev): bump flowbite from 1.8.1 to 3.0.0 in /packages by @dependabot in #515
- technical terms and popular names/websites by @MohamedAbdeen21 in #522
- fix(core):
AnA
linter did not recognize capital articles by @elijah-potter in #521 - use unicode_script crate to check chars are Latin script inside
is_english_lingual
by @hippietrail in #504 - sort and add to list of holidays by @hippietrail in #509
- fix(core):
RepeatedWords
now detects repeatedand
tokens by @elijah-potter in #520 harper-core
Documentation Updates by @elijah-potter in #513- feat: improve workflow for harper.js by @Asuka109 in #526
- Add more languages by @elijah-potter in #495
New Contributors
- @MohamedAbdeen21 made their first contribution in #522
- @Asuka109 made their first contribution in #526
Full Changelog: v0.18.0...v0.18.1
v0.18.0
What's Changed
- fix two grammatical errors by @hippietrail in #481
- Reword description of "that which" to avoid ironic redundancy by @hippietrail in #479
- feat(#422): add
same than
->same as
matcher trigger by @grantlemons in #453 - missing definite article, comma placement by @hippietrail in #480
- Improvements to
PluralConjugate
by @elijah-potter in #474 - correct Valentine's Day by @hippietrail in #491
- typo in zed integration doc by @hippietrail in #490
- feat(core): created linter for #426 by @elijah-potter in #452
- I missed a lets/let's mistake in a comment by @hippietrail in #492
- docs: rewrote instructions on how to author a rule by @elijah-potter in #482
- missing indefinite article in comments by @hippietrail in #488
- Apply rule from issue #465 to core document.rs by @hippietrail in #510
- feat(core): allow trailing commas in the
lint_group
macro by @elijah-potter in #483 - fix agreement error in docs by @hippietrail in #417
Full Changelog: v0.17.0...v0.18.0
v0.17.0
What's Changed
- feat(#393): add clap version & about attributes by @grantlemons in #394
- docs: added Homebrew as an installation method by @elijah-potter in #395
- typos/spelling/grammar fixes in comments, docs, and strings by @hippietrail in #398
- fix(core): harden title case module by @elijah-potter in #396
- fix(core): indexing problems by @elijah-potter in #409
- fix typo: remove extraneous 'to' by @hippietrail in #418
- chore: update description of Oxford rule by @ccoVeille in #419
- build(deps): bump itertools from 0.13.0 to 0.14.0 by @dependabot in #431
- build(deps): bump serde_json from 1.0.135 to 1.0.137 by @dependabot in #429
- Typst Test Fixes by @grantlemons in #391
- build(deps): bump clap from 4.5.23 to 4.5.27 by @dependabot in #444
- feat: Update VSCode Config by @mcecode in #400
- fix(core): infinite lint loops by @elijah-potter in #390
- Clean Up
harper-ls
logs by @elijah-potter in #447 - build(deps): bump undici from 6.19.8 to 6.21.1 in /packages by @dependabot in #450
- typo by @hippietrail in #462
- fix(core): the Oxford comma applies to
nor
as well by @elijah-potter in #445 - feat(harper.js): added ability to explicitly set config to the default by @elijah-potter in #449
- build(deps-dev): bump vite from 6.0.5 to 6.0.9 in /packages by @dependabot in #448
- feat(core): created a new rule that resolves #414 by @elijah-potter in #455
- build(deps-dev): bump vite from 5.4.11 to 5.4.12 in /packages by @dependabot in #475
- docs: added page to explain tooling for reviewers by @elijah-potter in #471
- fix instance of #384 in docs by @hippietrail in #477
New Contributors
- @hippietrail made their first contribution in #398
- @ccoVeille made their first contribution in #419
Full Changelog: v0.16.0...v0.17.0
v0.16.0
What's Changed
- A false-positive for subordinating conjunctions was resolved.
- harper.js now properly reexports types from harper-wasm.
- harper.js now has an automatically generated API reference page.
- Some erroneous filtering of certain errors was creating false-negatives.
- Words containing numbers are less likely to throw false-positive spelling errors.
- A rule for variations of the word โyourโ was added.
- fix the nvim-lspconfig link by @wadsaek in #367
- docs: added Scoop instructions by @elijah-potter in #361
- Enable LTO and codegen-units = 1 in the Release profile by @zamazan4ik in #363
- feat(#331): Literate Haskell Support by @grantlemons in #344
- build(deps): bump dirs from 5.0.1 to 6.0.0 by @dependabot in #372
- build(deps): bump tokio from 1.42.0 to 1.43.0 by @dependabot in #371
- build(deps): bump thiserror from 2.0.9 to 2.0.11 by @dependabot in #369
- feat: Typst Language Support by @grantlemons in #302
- build(deps): bump serde_json from 1.0.134 to 1.0.135 by @dependabot in #368
- feat(core): create new linter for dollar sign placement by @elijah-potter in #376
- refactor: Harper-ls Error-Handling Improvements by @grantlemons in #349
- feat(#104): Markdown linter config for ignoring link titles by @grantlemons in #305
- feat(harper.js): added ability to configure the markup language by @elijah-potter in #379
- feat(vscode-plugin): Add Literate Haskell and Typst Support + some doc updates by @mcecode in #388
New Contributors
- @wadsaek made their first contribution in #367
- @elijah-potter made their first contribution in #361
- @zamazan4ik made their first contribution in #363
Full Changelog: v0.15.0...v0.16.0
v0.15.0
What's Changed
- Added a variety of rules (see complete list here).
- Fixed issues with parsing hostnames
- Added a variety of available
Pattern
s for downstream use - Update +page.md by @aminwhat in #347
- feat: Add technical words to dictionary by @claydugo in #343
- refactor: remove raw hashes that are unnecessary by @hamirmahal in #324
- feat: Span View Command Improvements by @grantlemons in #340
- Address "one" for indefinite article rule by @claydugo in #359
- feat: Add support for cmake files by @alcroito in #353
- build(deps): bump itertools from 0.13.0 to 0.14.0 by @dependabot in #357
- feat(harper-ls): remove deleted file/s diagnostics by @mcecode in #304
- feat(vscode-plugin): Add CMake Support by @mcecode in #360
New Contributors
- @aminwhat made their first contribution in #347
- @hamirmahal made their first contribution in #324
- @alcroito made their first contribution in #353
Full Changelog: v0.14.0...v0.15.0
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