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