winget install --id Automattic.harper-ls
About Harper Language Server
Harper Grammar Checker Language Server Protocol
What's new in 2.7.0
What's Changed - refactor: more vec ctors and builders converted to iterators per #3670 by @hippietrail in #3712 - build(deps): bump egui from 0.34.2 to 0.34.3 by @dependabot[bot] in #3674 - build(deps): bump the actions-minor-patch group across 1 directory with 3 updates by @dependabot[bot] in #3695 - build(deps): bump nokogiri from 1.19.3 to 1.19.4 by @dependabot[bot] in #3701 - feat: max exodus→mass exodus by @hippietrail in #3637 - feat: add "standard option" to Oxymorons by @hippietrail in #3651 - feat: level of details→level of detail/levels of detail by @hippietrail in #3486 - feat: on one's own accord→of one's own accord by @hippietrail in #3646 - feat: on top off/ontop off/on topof → on top of by @hippietrail in #3400 - feat: that's here nor there→that's neither here nor there by @hippietrail in #3606 - feat: as much than→as much as by @hippietrail in #3493 - feat: Expand conf, config, perf, and pref by @hippietrail in #3535 - feat: over [number] plus→over [number] + [number] plus by @hippietrail in #3634 - Fixes three false positives when "A" or "B" are school test grades by @hippietrail in #3718 - feat: no longer I→I no longer by @hippietrail in #3611 - fix: remove debug print statements and related comments by @hippietrail in #3358 - refactor: standardize inline bounds syntax for linters by @hippietrail in #3601 - refactor: PhrasalVerbAsCompoundNoun now doesn't flag "meltdown ended up" by @hippietrail in #3599 - feat: in this/that regards→in this/that regard by @hippietrail in #3482 - feat: in retaliation to→in retaliation for/in response to by @hippietrail in #...
Version history
| Version | Updated | Notes |
|---|---|---|
| 2.7.0 | Unknown | What's Changed - refactor: more vec ctors and builders converted to iterators per #3670 by @hippietrail in #3712 - build(deps): bump egui from 0.34.2 to 0.34.3 by @dependabot[bot] in #3674 - build(deps): bump the actions... |
| 2.6.0 | Unknown | What's Changed - feat: now a days→nowadays; add to discourse markers by @hippietrail in #3392 - feat: the entire of→the entirety of by @hippietrail in #3604 - feat: leaving in drones→leaving in droves by @hippietrail in... |
| 2.5.0 | Unknown | What's Changed - fix(core): false-positive after contraction by @elijah-potter in #3595 - fix(core): ignore the letter s when found in a parenthesis after a word by @elijah-potter in #3596 - feat(weir): add BoarderBorder... |
| 2.4.0 | Unknown | What's Changed - docs: add Desktop app to list of platforms by @hippietrail in #3530 - feat: fellow coworker→fellow worker/coworker by @hippietrail in #3478 - feat: proof-of-concepts→proofs-of-concept by @hippietrail in... |
| 2.3.1 | Unknown | What's Changed - feat(desktop): add report issue buttons to menus by @elijah-potter in #3543 - fix(desktop): rename to Harper by @elijah-potter in #3542 - Dictionary curation for May 22, 2026 by @hippietrail in #3469 - f... |
| 2.2.1 | Unknown | What's Changed - fix(ci): produce universal desktop binaries by @elijah-potter in #3462 - feat(desktop): generate Harper-branded icons by @elijah-potter in #3430 - Quarto language detection for vscode by @silverhikari in... |
| 2.2.0 | Unknown | What's Changed - feat: at lest→at least by @hippietrail in #3243 - chore: add "day of age" to DayAndAge rule by @hippietrail in #3272 - feat: less confident SplitWords message when either word is only 1 char by @hippietr... |
| 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... |