Releases: Automattic/harper
Release list
v2.6.0
What's Changed
- feat: now a days→nowadays; add to discourse markers by @hippietrail in #3392
- feat: the entire of→the entirety of by @hippietrail in #3604
- feat: leaving in drones→leaving in droves by @hippietrail in #3636
- fix(core): support multiple brackets in rune matcher by @marcbachmann in #3608
- feat: tho→though by @hippietrail in #3526
- feat(desktop): mark support for Slack and Discord by @elijah-potter in #3641
- docs: grammar fix(es) in
contributors/desktopby @hippietrail in #3645 - feat: dir → directory by @hippietrail in #3470
- fix: don't flag missing "to" between "want" and a noun+verb word by @hippietrail in #3649
- feat(cli): allow
formssubcommand to accept multiple arguments by @abhishekDeshmukh74 in #2996 - feat: app picker bundle ID lookup by @hippietrail in #3653
- feat: as compare to→as compared to by @hippietrail in #3647
- refactor: introduce
SequenceExpr::word_seq()by @hippietrail in #3659 - Add version numbers next to key integrations that are often not up-to-date with the GitHub version by @hippietrail in #3553
- feat: (since) indefinite durations by @hippietrail in #3283
- feat: a handful of more → a handful more by @hippietrail in #3223
- feat: convenient store→convenience store by @hippietrail in #3113
- feat: the last days→the last few days by @hippietrail in #3268
- feat: feet/inches and minutes/seconds from '/" to ′/″ by @hippietrail in #3275
- feat: fix run into problem/a trouble/troubles by @hippietrail in #3685
- feat: in depth→in-depth by @hippietrail in #3684
- docs: Describe what a Harper Committer is by @elijah-potter in #3687
- feat: cross platform→cross-platform by @hippietrail in #3689
- feat: and the such→and such; as long that→as long as by @hippietrail in #3675
- feat: hazzle→hassle by @hippietrail in #3690
- feat: in do course→in due course by @hippietrail in #3693
- chore(dict): add 'Juneteenth' to dictionary by @yunusey in #3692
- feat: read and write→reads and writes/read and write by @hippietrail in #3697
- chore(harper.js): update examples to latest API by @elijah-potter in #3668
- Add PhrAIse to "Projects Using Harper" by @hqrrr in #3676
- fix(chrome-ext): work within Gutenberg
<iframe />s by @elijah-potter in #3702 - fix(obsidian): stale data on the Settings page by @elijah-potter in #3703
- feat(gitcommit): use tree-sitter for gitcommit by @Crysthamus in #3681
- refactor: optimize
FirstMatchOf/LongestMatchOfctors to accept generic iterators by @hippietrail in #3670 - feat: to to -> to do by @Cyncrovee in #3294
- feat(desktop): better search and icons for app modal by @elijah-potter in #3704
New Contributors
- @marcbachmann made their first contribution in #3608
- @abhishekDeshmukh74 made their first contribution in #2996
- @yunusey made their first contribution in #3692
- @hqrrr made their first contribution in #3676
- @Crysthamus made their first contribution in #3681
- @Cyncrovee made their first contribution in #3294
Full Changelog: v2.5.0...v2.6.0
v2.5.0
What's Changed
- fix(core): false-positive after contraction by @elijah-potter in #3595
- fix(core): ignore the letter
swhen found in a parenthesis after a word by @elijah-potter in #3596 - feat(weir): add BoarderBorder rule to catch boarder/border word confusion by @jlaportebot in #3481
- feat: impressed of→impressed by/with by @hippietrail in #3566
- fix(title_case): don't capitalize am/pm in time expressions by @jlaportebot in #3456
- fix: treat semicolons as chunk separators by @azmifarih in #3426
- feat: GOP party → GOP / Grand Old Party by @hippietrail in #3232
- fix(desktop): make macOS accessibility activation work when AXEnhancedUserInterface is rejected by @markduan in #3600
- refactor: standardize on
.to_owned()formessagein linters by @hippietrail in #3569 - feat: as how→as to how by @hippietrail in #3629
- docs: add Indian English to web
meta/descriptionby @hippietrail in #3626 - feat: a complain→a complaint by @hippietrail in #3622
- fix: digged→dug by @hippietrail in #3618
- feat: indian english "godown" is "warehouse" elsewhere by @hippietrail in #3619
- feat: out (of) the window variant matching dialect by @hippietrail in #3620
- feat: lmk→let me know by @hippietrail in #3616
- feat: inspired from→inspired by by @hippietrail in #3427
- feat: in the very least→at the very least by @hippietrail in #3441
- feat:
quietswitch forharper-cli lintby @hippietrail in #3583 - feat: environmental variable→environment variable by @hippietrail in #3537
- Capitalize off by @hippietrail in #3521
- feat: now know as→now known as by @hippietrail in #3609
- dictionary curation 2026-06-05 by @hippietrail in #3598
- fix: don't flag when contraction comes after a form of be, only before by @hippietrail in #3572
- build(deps): bump serde_json from 1.0.149 to 1.0.150 by @dependabot[bot] in #3624
New Contributors
- @azmifarih made their first contribution in #3426
- @markduan made their first contribution in #3600
Full Changelog: v2.4.0...v2.5.0
v2.4.0
What's Changed
- docs: add Desktop app to list of platforms by @hippietrail in #3530
- feat: fellow coworker→fellow worker/coworker by @hippietrail in #3478
- feat: proof-of-concepts→proofs-of-concept by @hippietrail in #3562
- feat: pay for check/fee/price→pay check/fee/price by @hippietrail in #3567
- docs: add comprehensive website contribution guide by @jdgajjar in #3561
- fix: don't flag more low-hanging fruit→lower-hanging by @hippietrail in #3571
- chore: pin third-party GitHub Actions to commit SHAs by @mahangu in #3573
- fix: don't flag CVEs by @hippietrail in #3582
- feat: at face values→at face value by @hippietrail in #3578
- chore: dictionary curation by @hippietrail in #3579
- Update vulnerable JS transitive dependencies by @lancewillett in #3555
- feat(desktop): expand role selection by @elijah-potter in #3546
- fix: prevent false positive "quite" → "quiet" (#3560) by @jdgajjar in #3575
- refactor: avoid complex type warning by @hippietrail in #3570
- feat: the the→that the by @hippietrail in #3549
- feat: incidence report→incident report by @hippietrail in #3593
- refactor(desktop): misc. changes and documentation by @elijah-potter in #3594
- fix(harper.js): slow message passing from slow cache lookups by @elijah-potter in #3588
- build(deps): bump tar from 0.4.45 to 0.4.46 by @dependabot[bot] in #3547
- build(deps): bump jwt from 2.10.3 to 3.2.0 by @dependabot[bot] in #3534
- build(deps): bump lru from 0.16.3 to 0.18.0 by @dependabot[bot] in #3556
- feat: curious/unsure to why etc→as to why etc by @hippietrail in #3538
- chore: add chocked/chucked/choked full to chock-full linter by @hippietrail in #3335
- feat: cache 22/cash 22→catch 22 by @hippietrail in #3548
- feat: USD dollars→USD/US dollars by @hippietrail in #3467
- build(deps): bump the actions-major group with 6 updates by @dependabot[bot] in #3585
New Contributors
- @jdgajjar made their first contribution in #3561
- @mahangu made their first contribution in #3573
- @lancewillett made their first contribution in #3555
Full Changelog: v2.3.1...v2.4.0
v2.3.1
What's Changed
- feat(desktop): add report issue buttons to menus by @elijah-potter in #3543
- fix(desktop): rename to
Harperby @elijah-potter in #3542 - Dictionary curation for May 22, 2026 by @hippietrail in #3469
- fix(desktop): exit child when parent stops by @elijah-potter in #3544
- fix(web): make correct font "important" by @elijah-potter in #3545
Full Changelog: v2.3.0...v2.3.1
v2.3.0
What's Changed
Hey guys!
Thanks for waiting. We've heard a ton of your feedback on Harper Desktop, and I'm proud to say that we've addressed a LOT of it. There are some big changes, so pay attention.
First off, we swapped out the update certificate for the binary. That means that auto-update will NOT upgrade you to the latest version. To update, uninstall Harper Desktop from your system and download the .dmg in this release below, then install it.
If you've previously installed Harper Desktop, you'll need to click on the Harper icon in your menu bar (at the top of the screen) and follow the setup instructions one more time. If you've previously given Harper Desktop permission to access the accessibility system, you should remove it from the list (with the - button`) and add it back.
This is because we've finally obtained a real certificate from Apple, so the previous entry in the permission list no longer points to the correct version of Harper.
I really appreciate your understanding with this. We're working out the kinks slowly but surely.
- build(deps): bump ruzstd from 0.8.2 to 0.8.3 by @dependabot[bot] in #3488
- fix(desktop): change name in dock from
harper-desktoptoHarperby @elijah-potter in #3496 - build(deps): bump rayon from 1.11.0 to 1.12.0 by @dependabot[bot] in #3487
- fix(desktop): remove duplicate update section by @elijah-potter in #3495
- fix(desktop): open settings by default by @elijah-potter in #3497
- fix(desktop): point release note link to correct page by @elijah-potter in #3505
- fix: avoid BuiltIn false positive for verb phrases by @jmolz in #3460
- fix(dictionary): add sidenote to curated dictionary by @jlaportebot in #3464
- fix: closure checking apostrophe confusingly named
is_tackby @hippietrail in #3511 - refactor: tweak two phrase set corrections by @hippietrail in #3512
- fix: no more dupe suggestions in
TransposedSpaceby @hippietrail in #3356 - feat: every single of→every single one of by @hippietrail in #3491
- fix(chrome-ext): shifting highlights after cursor during delay by @elijah-potter in #3446
- feat(core): create rule to add accent to cliche by @elijah-potter in #3494
- feat(desktop): avoid starting service until perms are granted by @elijah-potter in #3506
- feat: by the books→by the book by @hippietrail in #3492
- fix: upgrade Playwright to working version by @elijah-potter in #3533
- Add fastlane scaffolding for macOS code signing by @mokagio in #3507
- docs: tips for faster iteration by @elijah-potter in #3522
- feat: from the naked eye→by/to/with the naked eye by @hippietrail in #3520
- feat: desktop get locale/dialect from Tauri by @hippietrail in #3509
- fix(core): Weir options should resolve independent of order by @elijah-potter in #3523
- feat(desktop): get display name for bundles from system by @elijah-potter in #3516
- fix(desktop): remove second Dock icon by @elijah-potter in #3515
New Contributors
Full Changelog: v2.2.1...v2.3.0
v2.2.1
What's Changed
- fix(ci): produce universal desktop binaries by @elijah-potter in #3462
- feat(desktop): generate Harper-branded icons by @elijah-potter in #3430
- Quarto language detection for vscode by @silverhikari in #3465
- refactor:
OwnedExprExt::and_not→but_notby @hippietrail in #3399 - feat: add check vs cheque, tire vs tyre by @hippietrail in #3472
- Website redesign and Harper Desktop page by @JasonTheAdams in #3439
New Contributors
- @silverhikari made their first contribution in #3465
Full Changelog: v2.2.0...v2.2.1
v2.2.0
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
v2.1.0
What's Changed
- fix(chrome-ext): Harper not activating in Instagram DMs by @elijah-potter in #3145
- fix: all to/too linters now use same
LintKindby @hippietrail in #3135 - chore: dictionary curation 2026/04/02 by @hippietrail in #3094
- refactor(core)!: remove unused argument/member by @86xsk in #3072
- feat:
justls-config,grep-config, andgrep-config-settingsby @hippietrail in #3144 - feat: add soft-clean and hard-clean recipes to justfile by @ninjamar in #3142
- fix: "it damages the environment" by @hippietrail in #3149
- fix: refering -> referring in damages message string by @Inhishonor in #3148
- fix(core): many small issues by @elijah-potter in #3150
- build(deps): bump zip from 8.5.0 to 8.5.1 by @dependabot[bot] in #3163
- build(deps): bump tokio from 1.50.0 to 1.51.1 by @dependabot[bot] in #3162
- build(deps): bump tree-sitter-asciidoc from 0.6.0 to 0.7.0 by @dependabot[bot] in #3160
- build(deps): bump rand from 0.10.0 to 0.10.1 by @dependabot[bot] in #3159
- fix(dict): remove stale ElasticSearch entry in favour of Elasticsearch by @unlimitedsola in #3154
- feat(chrome-ext): add delay option by @elijah-potter in #3166
- refactor(core): refactor
TokenStringExtby @86xsk in #2888 - feat(core): rule that requires that the dash between numbers in a range is an en dash by @elijah-potter in #2961
- fix(core): address several outstanding issues by @elijah-potter in #3169
- feat: code on rust→code in rust etc. by @hippietrail in #3172
- fix: don't flag "should soft-fork" by @hippietrail in #3171
- feat: govt → government by @hippietrail in #3212
- feat: close/tight nit → knit by @hippietrail in #3200
- fix: lint comments after shebangs by @lawrence3699 in #3199
- refactor: don't flag "a fun and fantastic" by @hippietrail in #3201
- build(deps): bump thin-vec from 0.2.14 to 0.2.16 by @dependabot[bot] in #3182
- Hereby: require verb that is not also a noun by @joaquinhuigomez in #3213
- feat: more than what meets the eye/more that meets the eye→more than meets the eye by @hippietrail in #3178
- feat: infliction point → inflection point by @hippietrail in #3216
- Dictionary curation 2026 04 14 by @hippietrail in #3189
- fix: delete superseded linter by @hippietrail in #3231
- chore: dictionary curation by @hippietrail in #3228
- fix(vscode): pre-select current dialect in the dialect picker by @LanceYing2004 in #3198
New Contributors
- @ninjamar made their first contribution in #3142
- @unlimitedsola made their first contribution in #3154
- @lawrence3699 made their first contribution in #3199
- @LanceYing2004 made their first contribution in #3198
Full Changelog: v2.0.0...v2.1.0
v2.0.0
What's Changed
Hey all! We're finally releasing Harper 2.0. Why?
It isn't because we have any new groundbreaking features in this release, because we don't let major versioning stop us from pushing those out as soon as they're ready. It's because we have some breaking changes.
The biggest one only applies to you if you consume harper.js. From now on, instead of importing your binary from the main Harper module, you'll import it from one of four specialized modules.
Previously, you'd import the Harper WebAssembly binary with:
import { LocalLinter, binary } from "harper.js";As of Harper 2.0, you'll import it like this:
import { LocalLinter } from "harper.js";
import { binary } from "harper.js/binary"; It's that simple! Thanks to this change, you'll find that your applications are more conducive to tree-shaking and therefore might even be a bit smaller!
In addition to that large breaking change, we also have a bunch of smaller improvements rolling out. I won't go through them one by one, but you're free to read through any of the linked pull requests below.
- refactor(core): use
Option::get_or_insert_withby @86xsk in #2977 - test(linting): add comprehensive test cases for were/where lint rule by @estefafdez in #2984
- feat: means a lot for→means a lot to by @hippietrail in #2982
- feat: add subcommand to generate shell completions by @deckstose in #2978
- refactor(core): extract indefinite article logic into its own module by @mvanhorn in #2980
- feat(web): auto-detect dark theme from OS preference in #2963
- build(deps): bump tar from 0.4.44 to 0.4.45 by @dependabot[bot] in #2986
- feat: as evident by -> as evidenced by by @mvanhorn in #2985
- fix(core):
SplitWordsallowing uncommon merges by @elijah-potter in #2874 - feat: add lint rule for flaunt/flout mix-up in #2962
- test: add regression tests for need_to_noun false positives (#2320) by @majiayu000 in #3014
- fix: case-insensitive same-form check in SimplePastToPastParticiple by @saschabuehrle in #3012
- build(deps): bump pulldown-cmark from 0.13.1 to 0.13.3 by @dependabot[bot] in #3002
- build(deps): bump tree-sitter-rust from 0.24.0 to 0.24.1 by @dependabot[bot] in #3003
- build(deps): bump zip from 8.1.0 to 8.3.1 by @dependabot[bot] in #3000
- build(deps): bump cached from 0.56.0 to 0.59.0 by @dependabot[bot] in #3001
- chore(harper.js): update
raw-webexample to1.12.0by @elijah-potter in #3015 - feat: "a" & "an" both OK for "URL" by @hippietrail in #2981
- feat: except of→except for / exception of by @hippietrail in #2997
- build(deps): bump rustls-webpki from 0.103.8 to 0.103.10 by @dependabot[bot] in #2991
- feat: aspire for → aspire to by @hippietrail in #3004
- docs: added link to agent policy by @elijah-potter in #3016
- fix(lint-framework): reconnect popup host after DOM replacement by @k4sperski in #2998
- fix(harper-cli): return exit code 0 when no lints are found by @Ryujiyasu in #2836
- chore: dictionary curation 2026-03-19 by @hippietrail in #2968
- Added native Neovim LSP config to docs by @RobertCrummett in #2987
- fix: don't flag "more orange than red" etc. by @hippietrail in #2928
- perf(core): cache
WordSetinModalVerbby @86xsk in #3017 - feat: flag "use to" when "used to" is intended in #2975
- feat: flag nonstandard "verse" used as a verb (from "versus") in #2973
- feat: flag "date back from" as blend of "date from" and "date back to" in #2976
- feat(core): allow users to include dictionaries in Weirpacks by @elijah-potter in #2922
- feat: try out one's luck→try one's luck by @hippietrail in #2916
- fix(chrome-ext): reverse the toggle button to it appears "on" by @elijah-potter in #3026
- chore: dictionary curation by @hippietrail in #3023
- Improve embedded form support in iframes by @k4sperski in #3010
- refactor: compact token/lint content & char comparison by @hippietrail in #2957
- feat: expression to match pronoun-be, word pair or contraction by @hippietrail in #2944
- fix(chrome-ext): persist lint rule changes from settings page by @queelius in #3028
- feat: in 1 day from now→in one day/one day from now by @hippietrail in #3049
- build(deps): bump tree-sitter-ink-lbz from 0.0.1 to 0.0.5 by @dependabot[bot] in #3064
- build(deps): bump ordered-float from 5.1.0 to 5.3.0 by @dependabot[bot] in #3063
- build(deps): bump zip from 8.3.1 to 8.4.0 by @dependabot[bot] in #3065
- feat: support Quarto qmd files as markdown by @itamarst in #3053
- feat: thrive off (of)→thrive on by @hippietrail in #3055
- perf(core): optimizations in
LintGroupby @86xsk in #3052 - feat: worth while/worth-while → worthwhile by @hippietrail in #3056
- refactor(core)!:
Lrc<[char]>instead ofLrc<Vec<char>>by @86xsk in #3060 - chore: dictionary curation by @hippietrail in #3041
- build(deps): bump tree-sitter-rust from 0.24.1 to 0.24.2 by @dependabot[bot] in #3061
- fix(obsidian): OOM error by reducing WASM bundle size by @elijah-potter in #3050
- build(deps): bump tree-sitter-scala from 0.24.0 to 0.25.0 by @dependabot[bot] in #3062
- fix(lint): add 'side' to ignore list for effect/affect rule (fix issue #2958) by @estefafdez in #2983
- perf(spell): skip redundant lowercase DFA search in FstDictionary by @k4sperski in #3025
- refactor!: take argument by value instead of mut ref by @86xsk in #3051
- feat: Sneaked vs snuck by @hippietrail in #2209
- feat: skeleton for new
ExprLintermodules by @hippietrail in #3024 - feat: web scrapping → web scraping by @hippietrail in #3059
- fix: add key stroke→keystroke to key stoke→keystroke by @hippietrail in #3067
- perf(core): avoid conversion between string and char array by @86xsk in #3074
- fix: don't flag "each of whom" by @hippietrail in #3078
- docs(web): add link to @KraXen72's work by @elijah-potter in #3079
- feat: at all cost → at all costs by @hippietrail in #3082
- fix(core): address recent false positives and negatives by @elijah-potter in #3090
- feat: add styling for user-defined monospace fonts by @stanley-910 in #3105
- feat: I am bias/you are prejudice→biased/prejudiced by @hippietrail in #3058
- fix: don't flag "to" before "only" in ToTwoToo by @joaquinhuigomez in #3093
- feat: ppl→people by @hippietrail in #3116
- feat/obsidian web lint styling by @stanley-910 in #3104
- fix(lint-framework): preserve cursor position when dismissing suggestion popup by @draphy in #3112
- build(deps): bump uuid from 1.22.0 to 1.23.0 by @dependabot[bot] in #3117
- fix: skip PronounVerbAgreement for hyphenated compounds by @mvanhorn in #3095
- fix(harper-tex): mask additional LaTeX math environments by @jurajkl in #3103
- feat: look forward for→look forward to by @hippietrail in #3109
- build(deps): bump tempfile from 3.20.0 to 3.27.0 by @dependabot[bot] in #3118
- build(deps): bump indexmap from 2.13.0 to 2.13.1 by @Dependa...
v1.12.0
What's Changed
- fix(chrome-ext): formatting issues on Google Docs by @elijah-potter in #2960
- feat: grind to halt → grind to a halt by @hippietrail in #2972
- fix: correct typos and grammar in docs and comments by @cl2t in #2971
- feat: bullocks→bollocks by @hippietrail in #2970
- feat: add lint rule for "more that likely" typo by @ctonneslan in #2964
- fix: solve issue #2966 by @hippietrail in #2967
- feat: I am worry→I am worried by @hippietrail in #2943
- feat: add lint rule for "cutting age" eggcorn by @ctonneslan in #2965
- feat: at the expanse of→at the expense of by @hippietrail in #2926
New Contributors
Full Changelog: v1.11.0...v1.12.0