v2.8.0

Automattic/harperv2.8.0Aug 13, 2026by github-actions[bot]

AI Summary

A performance-oriented release featuring linter pooling, new web reporting capabilities, and expanded language support including Elixir comments and Obsidian integration.

Key Highlights

  • Created a pool of instantiated linters to amortize construction costs and improve performance.
  • Introduced web graphs and tables for reports in the web interface.
  • Added support for Elixir as a comment-only language.
  • Fixed Obsidian plugin race conditions and added sidebar support.

New Features

  • WASM benchmark harness and native allocation profiler.
  • Web report generation with graphs and tables.
  • Zero-width negation expression for core linting.
  • MacOS accessibility fixes and proper noun coverage.

Full Release Notes

## What's Changed
* feat(core): create pool of instantiated linters to amortize construction cost by @elijah-potter in https://github.com/Automattic/harper/pull/3904
* build(deps): bump regex from 1.12.3 to 1.13.1 by @dependabot[bot] in https://github.com/Automattic/harper/pull/3784
* feat(web): produce graphs and tables for reports by @elijah-potter in https://github.com/Automattic/harper/pull/3858
* fix(chrome-ext): do not allow lint updates to run at the same time or get dropped by @elijah-potter in https://github.com/Automattic/harper/pull/3908
* feat: PCB board redundancy by @hippietrail in https://github.com/Automattic/harper/pull/3919
* feat(dictionary): add entries for 'precess' and derivatives by @Silzinc in https://github.com/Automattic/harper/pull/3877
* build(deps): bump serde_with from 3.20.0 to 3.21.0 by @dependabot[bot] in https://github.com/Automattic/harper/pull/3831
* feat: take care about→take care of by @hippietrail in https://github.com/Automattic/harper/pull/3927
* fix(core): more adjustments to SplitWords by @elijah-potter in https://github.com/Automattic/harper/pull/3922
* feat: don't lint `.DS_Store` or `.json` files in dirs in `harper-cli lint` and `just lint` by @hippietrail in https://github.com/Automattic/harper/pull/3401
* chore: "YAMLs" was incorrectly generated by @hippietrail in https://github.com/Automattic/harper/pull/3928
* fix(core): avoid to-too false positives outside adjective contexts by @hydraxman in https://github.com/Automattic/harper/pull/3883
* feat(bench): add WASM benchmark harness and native allocation profiler by @k4sperski in https://github.com/Automattic/harper/pull/3153
* fix: avoid memory leak in JS products by @elijah-potter in https://github.com/Automattic/harper/pull/3917
* fix: "a software renderer" no longer flagged by @hippietrail in https://github.com/Automattic/harper/pull/3945
* docs(github): add a new option to the "AI Disclosure section" by @hippietrail in https://github.com/Automattic/harper/pull/3947
* chore: dictionary curation by @hippietrail in https://github.com/Automattic/harper/pull/3953
* build(deps): bump uuid from 1.23.0 to 1.24.0 by @dependabot[bot] in https://github.com/Automattic/harper/pull/3963
* build(deps): bump indexmap from 2.13.1 to 2.14.0 by @dependabot[bot] in https://github.com/Automattic/harper/pull/3962
* build(deps): bump clap from 4.6.0 to 4.6.1 by @dependabot[bot] in https://github.com/Automattic/harper/pull/3246
* fix(core): tag fought and wrought as past forms by @hydraxman in https://github.com/Automattic/harper/pull/3930
* Dictionary curation 2026 08 04 b by @hippietrail in https://github.com/Automattic/harper/pull/3965
* feat: accuse for→accuse of by @hippietrail in https://github.com/Automattic/harper/pull/3976
* chore: dictionary curation by @hippietrail in https://github.com/Automattic/harper/pull/3977
* fix: distracting warning in desktop app by @hippietrail in https://github.com/Automattic/harper/pull/4005
* fix(core): proper-noun coverage for Apple i-products and product phrases by @johndecker3 in https://github.com/Automattic/harper/pull/3436
* fix(core): preserve camelCase proper nouns in title case by @johndecker3 in https://github.com/Automattic/harper/pull/3438
* fix: remove dead TAILWIND_MODE env var that breaks Windows builds by @willherr72 in https://github.com/Automattic/harper/pull/3957
* build(deps): bump actions/stale from 10 to 11 in the actions-major group across 1 directory by @dependabot[bot] in https://github.com/Automattic/harper/pull/4003
* feat: implement into→implement in by @hippietrail in https://github.com/Automattic/harper/pull/3959
* chore: dictionary curation by @hippietrail in https://github.com/Automattic/harper/pull/4018
* Add Elixir as a supported language (comments only) by @jaller698 in https://github.com/Automattic/harper/pull/3934
* feat(core): flag extraneous "so" in "very much so" by @ozpool in https://github.com/Automattic/harper/pull/3817
* Obsidian sidebar by @LukeBenhase in https://github.com/Automattic/harper/pull/3915
* fix(obsidian): plugin failing to load due to race condition by @elijah-potter in https://github.com/Automattic/harper/pull/4020
* build(deps): bump rand from 0.10.1 to 0.10.2 by @dependabot[bot] in https://github.com/Automattic/harper/pull/4027
* build(deps): bump libfuzzer-sys from 0.4.12 to 0.4.13 by @dependabot[bot] in https://github.com/Automattic/harper/pull/4026
* build(deps): bump ruzstd from 0.8.3 to 0.9.0 by @dependabot[bot] in https://github.com/Automattic/harper/pull/4025
* feat(core): add zero-width negation expression by @floze-the-genius in https://github.com/Automattic/harper/pull/3850
* fix(core): add "understand" to the irregular verb list by @mauropereiira in https://github.com/Automattic/harper/pull/4036
* feat: unpossible etc. → impossible by @hippietrail in https://github.com/Automattic/harper/pull/3081
* chore: some `.toml` files had divergent `description`, `edition`, or `version` fields by @hippietrail in https://github.com/Automattic/harper/pull/3969
* fix(core): remove redundant copy of dictionary in `FstDictionary` by @elijah-potter in https://github.com/Automattic/harper/pull/4030
* fix(desktop): persist onboarding completion by @mauropereiira in https://github.com/Automattic/harper/pull/4022
* Fix/slack quill editor linting by @iuooip in https://github.com/Automattic/harper/pull/4033

## New Contributors
* @Silzinc made their first contribution in https://github.com/Automattic/harper/pull/3877
* @hydraxman made their first contribution in https://github.com/Automattic/harper/pull/3883
* @johndecker3 made their first contribution in https://github.com/Automattic/harper/pull/3436
* @willherr72 made their first contribution in https://github.com/Automattic/harper/pull/3957
* @jaller698 made their first contribution in https://github.com/Automattic/harper/pull/3934
* @ozpool made their first contribution in https://github.com/Automattic/harper/pull/3817
* @LukeBenhase made their first contribution in https://github.com/Automattic/harper/pull/3915
* @floze-the-genius made their first contribution in https://github.com/Automattic/harper/pull/3850
* @mauropereiira made their first contribution in https://github.com/Automattic/harper/pull/4036
* @iuooip made their first contribution in https://github.com/Automattic/harper/pull/4033

**Full Changelog**: https://github.com/Automattic/harper/compare/v2.7.0...v2.8.0