v1.5.0

Automattic/harperv1.5.0Jan 22, 2026by github-actions[bot]

AI Summary

This major release introduces the Weir language for writing linting rules, creates the harper-thesaurus, and adds extensive grammar improvements across multiple categories.

Key Highlights

  • Created the Weir language for custom linting rules
  • Introduced harper-thesaurus
  • Added numerous grammar rules: imho→in my humble/honest opinion, more fast→faster, whom→who, vicious circle vs cycle, etc.
  • Added browser dialect detection
  • Made VS Code dialect indicator clickable to change dialect
  • Hotkey support added
  • Fixed various false positives and edge cases

New Features

  • Weir language for linting rules
  • harper-thesaurus
  • Browser dialect detection
  • Clickable dialect indicator in VS Code
  • Hotkey support
  • Grammar rules for subject-verb agreement
  • Grammar rules for common mistakes (imho, more fast, whom, etc.)
  • Obsidian plugin improvements
  • Chrome extension fixes for various editors

Full Release Notes

## What's Changed
* feat(cli): Support all potential md extensions by @Inhishonor in https://github.com/Automattic/harper/pull/2449
* fix: Allow exception `need to match` for `NeedToNoun` by @Greenheart in https://github.com/Automattic/harper/pull/2448
* feat: initiatively→proactively / initially by @hippietrail in https://github.com/Automattic/harper/pull/2432
* fix: propagate proper noun property to possessive forms by @hippietrail in https://github.com/Automattic/harper/pull/2399
* chore: +vibe coding terms; add `/` annotation for phrasal verbs by @hippietrail in https://github.com/Automattic/harper/pull/2452
* Add some political science terms to the dictionary by @Inhishonor in https://github.com/Automattic/harper/pull/2441
* feat: number agreement in this/these type(s) of thing(s) by @hippietrail in https://github.com/Automattic/harper/pull/2400
* build(deps): bump serde_json from 1.0.148 to 1.0.149 by @dependabot[bot] in https://github.com/Automattic/harper/pull/2467
* fix(core): don't replace non-alphabetic characters when title-casing by @elijah-potter in https://github.com/Automattic/harper/pull/2454
* `harper-cli lint` keep overlapping lints switch & show lint priorities by @hippietrail in https://github.com/Automattic/harper/pull/2435
* feat: imho→in my humble/honest opinion by @hippietrail in https://github.com/Automattic/harper/pull/2468
* feat(core): create the Weir language by @elijah-potter in https://github.com/Automattic/harper/pull/2357
* chore: add "discoverable", "handoff" by @hippietrail in https://github.com/Automattic/harper/pull/2457
* refactor(core): merge semantically identical funcs by @86xsk in https://github.com/Automattic/harper/pull/2458
* doc: clarify instructions and project status by @elijah-potter in https://github.com/Automattic/harper/pull/2453
* feat: Add get_rel() to get a token relative to the end of a slice by @hippietrail in https://github.com/Automattic/harper/pull/2461
* chore: add "different tact" to "change tacts" linter by @hippietrail in https://github.com/Automattic/harper/pull/2469
* feat: create `harper-thesaurus` by @86xsk in https://github.com/Automattic/harper/pull/2085
* fix(core): PR getting flagged as 'misspelled' by @elijah-potter in https://github.com/Automattic/harper/pull/2476
* feat: Make the dialect indicator in the VS Code status bar clickable to change dialect by @hippietrail in https://github.com/Automattic/harper/pull/2443
* fix(core): ignore apostrophes in the `OrthographicConsistency` rule by @elijah-potter in https://github.com/Automattic/harper/pull/2475
* fix(chrome-ext): highlights are mis-positioned in fixed elements by @elijah-potter in https://github.com/Automattic/harper/pull/2477
* feat: take a look to → take a look at by @hippietrail in https://github.com/Automattic/harper/pull/2478
* feat: better of with → better off with by @hippietrail in https://github.com/Automattic/harper/pull/2483
* doc(core): describe how Weir's replacement strategies work by @elijah-potter in https://github.com/Automattic/harper/pull/2480
* fix: don't flag "no two" etc. by @hippietrail in https://github.com/Automattic/harper/pull/2489
* feat: very less → much less/far less/a lot less by @hippietrail in https://github.com/Automattic/harper/pull/2484
* feat: more fast → faster etc. by @hippietrail in https://github.com/Automattic/harper/pull/2263
* Hotkey by @LoganBrinsmead in https://github.com/Automattic/harper/pull/2149
* feat: fix "I walks" / "he walk" etc. by @hippietrail in https://github.com/Automattic/harper/pull/2333
* perf(test): improve test performance by @86xsk in https://github.com/Automattic/harper/pull/2473
* fix(core): panics in Weir by @elijah-potter in https://github.com/Automattic/harper/pull/2493
* fix(thesaurus): MacOS builds by using `ruzstd` by @elijah-potter in https://github.com/Automattic/harper/pull/2490
* build(deps): bump chrono from 0.4.42 to 0.4.43 by @dependabot[bot] in https://github.com/Automattic/harper/pull/2535
* build(deps): bump thiserror from 2.0.17 to 2.0.18 by @dependabot[bot] in https://github.com/Automattic/harper/pull/2533
* build(deps): bump indexmap from 2.12.1 to 2.13.0 by @dependabot[bot] in https://github.com/Automattic/harper/pull/2534
* Indian English tweaks by @hippietrail in https://github.com/Automattic/harper/pull/2507
* fix(core): fix `AnA` false-positives by @86xsk in https://github.com/Automattic/harper/pull/2538
* feat: whom → who when subject of verb by @hippietrail in https://github.com/Automattic/harper/pull/2528
* feat: obsess on → obsess over; obsessed on → obsessed with by @hippietrail in https://github.com/Automattic/harper/pull/2537
* feat: vicious circle vs cycle by @hippietrail in https://github.com/Automattic/harper/pull/2384
* fix(core): capitalization issue in `SpellCheck` by @86xsk in https://github.com/Automattic/harper/pull/2541
* feat: despite it is→ despite (it/its) being by @hippietrail in https://github.com/Automattic/harper/pull/2542
* feat: detect browser dialect by @hippietrail in https://github.com/Automattic/harper/pull/2485
* feat: to loose/too lose→too loose/to lose by @hippietrail in https://github.com/Automattic/harper/pull/2543
* feat: allow any preposition, special plurals for both nouns by @hippietrail in https://github.com/Automattic/harper/pull/2514
* fix(chrome-ext): Applying suggestions breaks cursor/keyboard in Draft.js and Slate editors by @draphy in https://github.com/Automattic/harper/pull/2495
* feat(cli): chunk annotations by @86xsk in https://github.com/Automattic/harper/pull/2450
* fix(core): allow both a/an for "LED" in `AnA` by @86xsk in https://github.com/Automattic/harper/pull/2556
* refactor(core): simplify code by @86xsk in https://github.com/Automattic/harper/pull/2555
* feat(core): create a good number of new Weir rules by @elijah-potter in https://github.com/Automattic/harper/pull/2506
* feat(harper.js): expose the Typst parser in `harper.js` by @elijah-potter in https://github.com/Automattic/harper/pull/2554
* docs: fix errors in documentation by @elijah-potter in https://github.com/Automattic/harper/pull/2557
* fix(chrome-ext): Applying suggestions duplicates text in WhatsApp Web Lexical editor by @draphy in https://github.com/Automattic/harper/pull/2563
* fix(harper-typst): condense contractions by @elijah-potter in https://github.com/Automattic/harper/pull/2558
* chore: dictionary curation by @hippietrail in https://github.com/Automattic/harper/pull/2496
* chore: Update dictionary with new entries by @Inhishonor in https://github.com/Automattic/harper/pull/2540
* refactor(core): remove dependency on `lazy_static` by @86xsk in https://github.com/Automattic/harper/pull/2560
* feat(harper-typst): update to Typst `0.14.2` by @elijah-potter in https://github.com/Automattic/harper/pull/2566
* fix(chrome-ext): remove mention of Chrome Extension to avoid confusion for Firefox users by @elijah-potter in https://github.com/Automattic/harper/pull/2567

## New Contributors
* @Inhishonor made their first contribution in https://github.com/Automattic/harper/pull/2449
* @Greenheart made their first contribution in https://github.com/Automattic/harper/pull/2448
* @draphy made their first contribution in https://github.com/Automattic/harper/pull/2495

**Full Changelog**: https://github.com/Automattic/harper/compare/v1.4.1...v1.5.0