v2.10.0

Automattic/harperv2.10.0Sep 9, 2026by github-actions[bot]

Upgrading?

AI Summary

This release focuses on improving grammar and spelling accuracy through numerous corrections, refactoring internal web components, and enhancing the user interface with new features like the dashboard for domain reports and a new loader.

Key Highlights

  • Added a dashboard for user-submitted domain problem reports
  • Refactored web components into a central library
  • Added a configurable diagnostic delay for harper-ls
  • Fixed Google Docs bridge and replaceText issues
  • Updated numerous grammar rules including 'straight forward' and 'show case'

New Features

  • Grammar correction: ajar & akimbo
  • Grammar correction: take advantage of
  • Grammar correction: legitimate
  • Grammar correction: provoke
  • Grammar correction: reverse engineer
  • Grammar correction: slippery slope
  • Grammar correction: show case
  • Grammar correction: straight forward
  • Grammar correction: not for lack of
  • Grammar correction: in the first place
  • Grammar correction: a waste of
  • Grammar correction: on the fence
  • Grammar correction: in an ideal world
  • Grammar correction: what does
  • Grammar correction: pleaded vs pled
  • Grammar correction: chicken-and-egg variants
  • Grammar correction: lots/lot's/a lot variants
  • Grammar correction: OTOH
  • Grammar correction: fave -> favourite
  • Web: Dashboard for domain problem reports
  • Web: Link to Edge extension
  • Web: New interesting loader
  • Core: Word constructor for standard case combos
  • Language Server: Configurable diagnostic delay
  • Fix: Google Docs bridge and replaceText
  • Fix: Title-case lowercase x connector
  • Fix: Singular 'purpose' correction
  • Refactor: WordSet now takes an iterator
  • Refactor: Web components moved to central library

Full Release Notes

## What's Changed
* feat: a jar & a kimbo → ajar & akimbo by @hippietrail in https://github.com/Automattic/harper/pull/4249
* feat: final nail on the coffin → in by @hippietrail in https://github.com/Automattic/harper/pull/4251
* build(deps): bump cargo-bins/cargo-binstall from 910d9e4456ce4b039662d2a02a34ef1d23c3c50c to 5aafaaca52423a22d83a812fa3ca77492e2895db by @dependabot[bot] in https://github.com/Automattic/harper/pull/4259
* build(deps): bump redhat-actions/buildah-build from 2.13 to 3 in the actions-major group by @dependabot[bot] in https://github.com/Automattic/harper/pull/4258
* feat: take control over→take control of by @hippietrail in https://github.com/Automattic/harper/pull/4262
* feat: remove redundant relative pronoun after which- pronouns by @hippietrail in https://github.com/Automattic/harper/pull/4254
* refactor: convert two linter pairs to use `OneOfMany` by @hippietrail in https://github.com/Automattic/harper/pull/4211
* feat: take pride of → take pride in by @hippietrail in https://github.com/Automattic/harper/pull/4273
* feat: legit → legitimate by @hippietrail in https://github.com/Automattic/harper/pull/4271
* build(deps): bump itertools from 0.14.0 to 0.15.0 by @dependabot[bot] in https://github.com/Automattic/harper/pull/4276
* build(deps): bump open from 5.4.1 to 5.4.2 by @dependabot[bot] in https://github.com/Automattic/harper/pull/4277
* chore(chrome-ext): remove Prettier dep by @elijah-potter in https://github.com/Automattic/harper/pull/4266
* refactor(web): move web components into central library by @elijah-potter in https://github.com/Automattic/harper/pull/4264
* feat: provocate → provoke by @hippietrail in https://github.com/Automattic/harper/pull/4278
* feat: fix odd variants of chicken-and-egg problem by @hippietrail in https://github.com/Automattic/harper/pull/4222
* feat: at the first place→in the first place by @hippietrail in https://github.com/Automattic/harper/pull/4215
* chore: dictionary curation by @hippietrail in https://github.com/Automattic/harper/pull/4248
* feat: various mistakes with `lots`, `lot's`, and `a lot` by @hippietrail in https://github.com/Automattic/harper/pull/4289
* feat: on a fence → on the fence by @hippietrail in https://github.com/Automattic/harper/pull/4300
* feat: afict → as far as I can tell by @hippietrail in https://github.com/Automattic/harper/pull/4301
* fix(core): replace the `reexecute` dictionary entry with `re-execute` by @mauropereiira in https://github.com/Automattic/harper/pull/4042
* feat: not without a lack of → not for lack of by @hippietrail in https://github.com/Automattic/harper/pull/4306
* feat: pleaded vs pled by @hippietrail in https://github.com/Automattic/harper/pull/4308
* feat: play a factor → play a part/role / be a factor by @hippietrail in https://github.com/Automattic/harper/pull/4310
* feat: a waist of → a waste of by @hippietrail in https://github.com/Automattic/harper/pull/4317
* feat: take advantage a→take advantage of by @jvoisin in https://github.com/Automattic/harper/pull/3999
* fix: correct also with singular "purpose" by @hippietrail in https://github.com/Automattic/harper/pull/4295
* fix(title-case): keep lowercase `x` as a connector word by @pyrooka in https://github.com/Automattic/harper/pull/4238
* feat(web): add dashboard for user-submitted domain problem reports by @elijah-potter in https://github.com/Automattic/harper/pull/4267
* feat: OTOH → on the other hand by @hippietrail in https://github.com/Automattic/harper/pull/4313
* feat: methods for matching sg/pl nouns that are not both by @hippietrail in https://github.com/Automattic/harper/pull/4319
* build(deps): bump cargo-bins/cargo-binstall from 5aafaaca52423a22d83a812fa3ca77492e2895db to b874e25ea559687bec77e281e9b271aa1367b624 by @dependabot[bot] in https://github.com/Automattic/harper/pull/4324
* feat: publish some linter priorities that other linters refer to by @hippietrail in https://github.com/Automattic/harper/pull/4255
* fix: feeded → fed by @hippietrail in https://github.com/Automattic/harper/pull/4327
* feat: reversed engineer → reverse engineer by @hippietrail in https://github.com/Automattic/harper/pull/4312
* feat: `Word` ctor for standard case combos; fave → favourite by @hippietrail in https://github.com/Automattic/harper/pull/3263
* feat: for same reason→for the same reason by @hippietrail in https://github.com/Automattic/harper/pull/3941
* refactor: `WordSet` now takes an iterator by @hippietrail in https://github.com/Automattic/harper/pull/4247
* feat(harper-ls): add configurable diagnostic delay by @Dronakurl in https://github.com/Automattic/harper/pull/3282
* Dictionary curation 2026 09 04 by @hippietrail in https://github.com/Automattic/harper/pull/4332
* feat: in ideal world → in an ideal world by @hippietrail in https://github.com/Automattic/harper/pull/4325
* feat: slippy slope → slippery slope by @hippietrail in https://github.com/Automattic/harper/pull/4338
* feat(web): add a link to the Edge extension by @elijah-potter in https://github.com/Automattic/harper/pull/4330
* fix: Google Docs bridge and replaceText issue for the popup suggestion by @Yuvi-raj-P in https://github.com/Automattic/harper/pull/3847
* feat: what dose -> what does  by @FranBowden in https://github.com/Automattic/harper/pull/4318
* feat(web): add more interesting loader to the web editor by @elijah-potter in https://github.com/Automattic/harper/pull/4340
* build(deps): bump base64 from 0.22.1 to 0.23.1 by @dependabot[bot] in https://github.com/Automattic/harper/pull/4341
* build(deps): bump uiautomation from 0.25.0 to 0.25.1 by @dependabot[bot] in https://github.com/Automattic/harper/pull/4342
* feat: straight forward → straightforward by @hippietrail in https://github.com/Automattic/harper/pull/4343
* feat: show case → showcase by @hippietrail in https://github.com/Automattic/harper/pull/4345
* feat: deny offer → decline/reject by @hippietrail in https://github.com/Automattic/harper/pull/4348

## New Contributors
* @pyrooka made their first contribution in https://github.com/Automattic/harper/pull/4238
* @Yuvi-raj-P made their first contribution in https://github.com/Automattic/harper/pull/3847
* @FranBowden made their first contribution in https://github.com/Automattic/harper/pull/4318

**Full Changelog**: https://github.com/Automattic/harper/compare/v2.9.1...v2.10.0

Related Repositories