What's Changed
- feat: at lest→at least by @hippietrail in #3243
- chore: add "day of age" to
DayAndAgerule by @hippietrail in #3272 - feat: less confident
SplitWordsmessagewhen either word is only 1 char by @hippietrail in #3265 - fix(chrome-plugin): auto-close report page on tab switch or navigation #3225 by @muhammed-mukthar in #3227
- docs: link to QOwnNotes and Grammate, two apps using Harper by @hippietrail in #3261
- feat: monumentously→momentously/monumentally by @hippietrail in #3264
- feat: separate web editor into own package by @elijah-potter in #3191
- docs: remove mentions of
MatcherandWrongQuoteslinters by @hippietrail in #3262 - build(deps): bump tree-sitter-scala from 0.25.0 to 0.26.0 by @dependabot[bot] in #3247
- feat: fond on→found on/fond of by @hippietrail in #3251
- feat: formidable years→formative years by @hippietrail in #3249
- chore: dictionary curation by @hippietrail in #3240
- feat: on hindsight/in hind sight etc.→in hindsight by @hippietrail in #3305
- feat: expand coord, vuln, notif, algo by @hippietrail in #3291
- Dictionary Curation 2025-05-01 by @hippietrail in #3279
- build(deps): bump clap_complete from 4.6.0 to 4.6.3 by @dependabot[bot] in #3301
- build(deps): bump tokio from 1.51.1 to 1.52.1 by @dependabot[bot] in #3300
- feat: side tangent→tangent/aside by @hippietrail in #3298
- refactor: move
dictionary_iointo own crate by @elijah-potter in #3307 - feat(harper.js): make it easier to ignore all lints by @elijah-potter in #3315
- fix: a some time→some time by @hippietrail in #3318
- fix(lint-framework): handle soft breaks in contenteditable text extraction by @draphy in #3317
- Redesign harper-editor UI by @JasonTheAdams in #3278
- feat: LLM model→LLM/large language model by @hippietrail in #3308
- fix: restore
CallThemlinter that got unlinked from the project at some point by @hippietrail in #3320 - feat: in favour doing→in favour of doing by @hippietrail in #3293
- feat: "there is" agreement by @hippietrail in #3303
- fix(chrome-ext): extend test timeout by @elijah-potter in #3328
- feat: argument to be said→argument to be made by @hippietrail in #3360
- chore: dictionary curation 2026-05-06 by @hippietrail in #3312
- build(deps): bump zip from 8.5.1 to 8.6.0 by @dependabot[bot] in #3341
- build(deps): bump tree-sitter-c from 0.24.1 to 0.24.2 by @dependabot[bot] in #3342
- feat: add backtick as another wrong-apostrophe mistake by @hippietrail in #3349
- Let me laugh by @JasonTheAdams in #3365
- feat(desktop): create Harper Desktop by @elijah-potter in #3324
- fix(harper-typst): crash by @elijah-potter in #3366
- feat(desktop): fill out setup flow by @elijah-potter in #3381
- chore: Tickboxes for AI use and test provenance by @hippietrail in #3375
- style: clean up some imports by @86xsk in #3179
- fix(core): delegate to correct underlying method by @elijah-potter in #3387
- fix(ci): issue with Rust Cache on new macOS runners by @elijah-potter in #3389
- fix(harper-tex): out-of-bounds error by @elijah-potter in #3386
- feat(core): allow scope config in Weir rules by @elijah-potter in #3382
- build(desktop): create release workflow for Harper Desktop by @elijah-potter in #3388
- feat(core): create
CantWayrule by @elijah-potter in #3383 - fix(core): refine BetterOffPhrase contexts by @cfcryptotrader-rgb in #3376
- feat: long time ago→a long time ago by @hippietrail in #3395
- feat: add ThereOwn linter for "there own" → "their own" by @kimjune01 in #3336
- Fix FindFine false positive on 'is find ' by @SAY-5 in #3363
- Add verb past form only helpers by @impetus82 in #3379
- feat: just with default recipe now prints a help message by @ninjamar in #3414
- feat: for free of charge → for free / free of charge by @hippietrail in #3413
- feat: improve just clean and hard-clean recipes by fixing some bugs by @ninjamar in #3415
- build(deps): bump tree-sitter-swift from 0.7.1 to 0.7.2 by @dependabot[bot] in #3411
- build(deps): bump tree-sitter-c-sharp from 0.23.1 to 0.23.5 by @dependabot[bot] in #3410
- chore: unneeded comments, typos in comments by @hippietrail in #3409
- fix(core): replace Arc with Lrc in call_them and should_contract by @Dronakurl in #3407
- feat: to crave for → to crave by @hippietrail in #3408
- feat(desktop): add debounce option by @elijah-potter in #3420
- fix(desktop): hide highlights while windows move by @elijah-potter in #3419
- feat: constitute as→constitute by @hippietrail in #3398
- fix(desktop): broken buttons on setup page by @elijah-potter in #3421
- chore: dictionary curation 2026/05/13 by @hippietrail in #3391
- fix(weir): test runner now tries all 'becomes' alternatives, not just first 3 by @jlaportebot in #3424
- feat:
AnchorEndfinally fixed by @hippietrail in #3406 - feat: nought→zero for US english by @hippietrail in #3429
- feat(core): new
AvoidContractionsrule by @elijah-potter in #3397 - feat(desktop): auto update by @elijah-potter in #3448
New Contributors
- @muhammed-mukthar made their first contribution in #3227
- @JasonTheAdams made their first contribution in #3278
- @cfcryptotrader-rgb made their first contribution in #3376
- @kimjune01 made their first contribution in #3336
- @SAY-5 made their first contribution in #3363
- @impetus82 made their first contribution in #3379
- @Dronakurl made their first contribution in #3407
- @jlaportebot made their first contribution in #3424
Full Changelog: v2.1.0...v2.2.0