winget install --id Automattic.harper-ls
About Harper Language Server
Harper Grammar Checker Language Server Protocol
What's new in 2.1.0
What's Changed - fix(chrome-ext): Harper not activating in Instagram DMs by @elijah-potter in #3145 - fix: all to/too linters now use same LintKind by @hippietrail in #3135 - chore: dictionary curation 2026/04/02 by @hippietrail in #3094 - refactor(core)!: remove unused argument/member by @86xsk in #3072 - feat: just ls-config, grep-config, and grep-config-settings by @hippietrail in #3144 - feat: add soft-clean and hard-clean recipes to justfile by @ninjamar in #3142 - fix: "it damages the environment" by @hippietrail in #3149 - fix: refering -> referring in damages message string by @Inhishonor in #3148 - fix(core): many small issues by @elijah-potter in #3150 - build(deps): bump zip from 8.5.0 to 8.5.1 by @dependabot[bot] in #3163 - build(deps): bump tokio from 1.50.0 to 1.51.1 by @dependabot[bot] in #3162 - build(deps): bump tree-sitter-asciidoc from 0.6.0 to 0.7.0 by @dependabot[bot] in #3160 - build(deps): bump rand from 0.10.0 to 0.10.1 by @dependabot[bot] in #3159 - fix(dict): remove stale ElasticSearch entry in favour of Elasticsearch by @unlimitedsola in #3154 - feat(chrome-ext): add delay option by @elijah-potter in #3166 - refactor(core): refactor TokenStringExt by @86xsk in #2888 - feat(core): rule that requires that the dash between numbers in a range is an en dash by @elijah-potter in #2961 - fix(core): address several outstanding issues by @elijah-potter in #3169 - feat: code on rust→code in rust etc. by @hippietrail in #3172 - fix: don't flag "should soft-fork" by @hippietrail in #3171 - feat: govt → government by @hippietrail in #3212 - feat: close/tight n...
Version history
| Version | Updated | Notes |
|---|---|---|
| 2.1.0 | Unknown | What's Changed - fix(chrome-ext): Harper not activating in Instagram DMs by @elijah-potter in #3145 - fix: all to/too linters now use same LintKind by @hippietrail in #3135 - chore: dictionary curation 2026/04/02 by @hip... |
| 2.0.0 | Unknown | What's Changed Hey all! We're finally releasing Harper 2.0. Why? It isn't because we have any new groundbreaking features in this release, because we don't let major versioning stop us from pushing those out as soon as t... |
| 1.12.0 | Unknown | What's Changed - fix(chrome-ext): formatting issues on Google Docs by @elijah-potter in #2960 - feat: grind to halt → grind to a halt by @hippietrail in #2972 - fix: correct typos and grammar in docs and comments by @cl2... |
| 1.11.0 | Unknown | What's Changed - chore: dictionary curation by @hippietrail in #2867 - feat: do a mistake→make a mistake by @hippietrail in #2463 - refactor: two-digit decade support by @hippietrail in #2911 - fix: warn about clashing l... |
| 1.10.0 | Unknown | What's Changed - build(deps): bump pulldown-cmark from 0.13.0 to 0.13.1 by @dependabot[bot] in #2848 - build(deps): bump chrono from 0.4.43 to 0.4.44 by @dependabot[bot] in #2852 - build(deps): bump quickcheck from 1.0.3... |
| 1.9.0 | Unknown | What's Changed - Propagating newer methods of SequenceExpr through the codebase by @hippietrail in #2759 - feat(core): many more Weir rules by @elijah-potter in #2742 - feat(chrome-ext): the ability to load/unload Weirpa... |
| 1.8.0 | Unknown | What's Changed - build(thesaurus): reduce compression level for debug builds by @86xsk in #2694 - feat(chrome-ext): move the review request to 14 days after installation by @elijah-potter in #2707 - feat(web): show bette... |
| 1.7.0 | Unknown | What's Changed - feat: worth to do → worth doing by @hippietrail in #2638 - build(deps): bump time from 0.3.41 to 0.3.47 by @dependabot[bot] in #2663 - refactor: use Span::empty to create empty spans by @86xsk in #2658 -... |
| 1.6.0 | Unknown | What's Changed - refactor(brill): remove lazy_static dependency by @86xsk in #2571 - feat: afterall → after all by @hippietrail in #2582 - perf(core): cache Wier ASTs by @86xsk in #2584 - deps(cli): bump ariadne from 0.4... |
| 1.5.1 | Unknown | What's Changed - fix(chrome-ext): problems with incorrect dialect selection and reversion by @elijah-potter in #2569 Full Changelog: v1.5.0...v1.5.1 |
| 1.4.1 | Unknown | What's Changed - fix(chrome-ext): properly support Zendesk by @elijah-potter in #2424 - refactor(cli): refactor Input and adjacent code by @86xsk in #2412 - fix(obsidian): bug causing the Indian dialect to crash the sett... |
| 1.4.0 | Unknown | What's Changed - feat: be good in sth. → be good at sth. by @hippietrail in #2368 - fix: issue 1722 by @hippietrail in #2373 - fix: expand BestOfAllTime linter by @hippietrail in #2381 - fix: don't change 'you' to 'your'... |
| 1.3.0 | Unknown | What's Changed - feat: daml support by @Sengoku11 in #2347 - fix: false positive for "since N years old" by @hippietrail in #2342 - feat: make senses→make sense by @hippietrail in #2330 - build(deps): bump uuid from 1.18... |
| 1.2.0 | Unknown | What's Changed - feat(core): many new rules by @elijah-potter in #2292 - fix: flag "piece of advise" by @hippietrail in #2266 - fix(web): problems with the title casing page by @elijah-potter in #2293 - feat: implement #... |
| 1.1.0 | Unknown | What's Changed - build(deps): bump tracing from 0.1.41 to 0.1.43 by @dependabot[bot] in #2271 - build(deps): bump indexmap from 2.12.0 to 2.12.1 by @dependabot[bot] in #2274 - build(deps): bump criterion from 0.7.0 to 0.... |
| 1.0.0 | Unknown | What's Changed - build(deps): bump open from 5.3.2 to 5.3.3 by @dependabot[bot] in #2235 - refactor: improvements to ProgressiveNeedsBe by @hippietrail in #2232 - feat: filter out unknown only and ignore rules only once... |
| 0.73.0 | Unknown | What's Changed - fix(chrome-ext): find permanent solution to HN integration test failures by @elijah-potter in #2213 - fix: change AndIn from phrase_correction to a linter by @hippietrail in #2207 - fix indefinite articl... |
| 0.72.0 | Unknown | What's Changed - feat: more bigger→bigger, most best→best by @hippietrail in #2148 - feat: flag "allow to do" by @hippietrail in #2159 - feat: nerve wreck→nervous wreck by @hippietrail in #2154 - build(deps): bump burn f... |
| 0.71.0 | Unknown | What's Changed - build(deps): bump clap from 4.5.48 to 4.5.50 by @dependabot[bot] in #2112 - build(deps): bump getrandom from 0.3.3 to 0.3.4 by @dependabot[bot] in #2113 - feat(vscode): support more platforms by @mcecode... |
| 0.70.0 | Unknown | What's Changed - fix(chrome-ext): use Harper-specific HTML tag to avoid CSS conflicts by @elijah-potter in #2101 - feat(ls): add lint origin tags to the diagnostics by @elijah-potter in #2102 - fix(chrome-ext): don't ove... |